2010-08-16 7 views
7

Estoy intentando ejecutar una instalación de blog de varios dominios con WordPress y Nginx. El último paso es configurar algunas reglas de reescritura en .htaccess (solo apache) para el servidor web. ¿Cómo traduzco esto a las reglas de reescritura de Nginx?Reglas de reescritura de sitios múltiples de WordPress en Nginx

RewriteEngine On 
RewriteBase/

RewriteRule ^index\.php$ - [L] 

# uploaded files 
RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L] 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 
RewriteRule . index.php [L] 

Respuesta

9

nginx rewrite rules example for Wordpress 3:

server{ 
    server_name *.example.com; 
    listen 80; 
    #on server block 
    ##necessary if using a multi-site plugin 
    server_name_in_redirect off; 
    ##necessary if running Nginx behind a reverse-proxy 
    port_in_redirect off; 
    access_log /var/log/nginx/example-com-access.log; 

    location/{ 
     root /var/www/example.com/wordpress; 
     index index.html index.htm index.php; 
     rewrite ^.*/files/(.*)$ /wp-includes/ms-files.php?file=$1 last; 
     if (!-e $request_filename) { 
      rewrite ^.+/?(/wp-.*) $1 last; 
      rewrite ^.+/?(/.*\.php)$ $1 last; 
      rewrite ^(.+)$ /index.php?q=$1 last; 
     } 
    } 

    location ~* ^.+\.(html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ 
    { 
     root /var/www/example.com/wordpress; 
     rewrite ^/.*(/wp-.*/.*\.(html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js))$ $1 last; 
     rewrite ^.*/files/(.*(html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js))$ /wp-includes/ms-files.php?file=$1 last; 
     expires 30d; 
     break; 
    } 

    location ~ wp\-.*\.php|wp\-admin|\.php$ { 
     include /etc/nginx/fastcgi_params; 
     fastcgi_pass 127.0.0.1:9000; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME /var/www/example.com/wordpress$fastcgi_script_name; 
    } 
} 
+0

eso es exactamente lo que necesitaba ... ¡gracias! – jdelard

3

faltase un espacio después de la reescritura ^. . /archivos/( (html | jpg | ....... necesita un espacio después del $ y antes /wp-includes/ms-files.php Saludos

0

En lugar de:

.!
location ~ wp\-.*\.php|wp\-admin|\.php$ { 

Cambiar a:

location ~ .php$ 

permite dirigir la

blog.com/wp-admin 

a

blog.com/wp-admin/ 
1

reglas de reescritura Este nginx para WordPress han resuelto mi problema perfectamente, incluyendo el cambio de ex.com/wp-admin a ex.com/wp-admin/.

pero he encontrado un fallo en cuyo interior se me perdió varias horas de la siguiente manera: Si la URL estática incluye .html igual /%category%/%post_id%.html, usted tiene que insted de:

location ~* ^.+\.(html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ 
 
    { 
 
     root /var/www/example.com/wordpress; 
 
     rewrite ^/.*(/wp-.*/.*\.(html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js))$ $1 last; 
 
     rewrite ^.*/files/(.*(html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js))$ /wp-includes/ms-files.php?file=$1 last; 
 
     expires 30d; 
 
     break; 
 
    }

Cambiar a:

location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ 
 
    { 
 
     root /var/www/example.com/wordpress; 
 
     rewrite ^/.*(/wp-.*/.*\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js))$ $1 last; 
 
     rewrite ^.*/files/(.*(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js))$ /wp-includes/ms-files.php?file=$1 last; 
 
     expires 30d; 
 
     break; 
 
    }

¡O bien, ha aparecido el error '404 página no encontrada' en las páginas de contenido!

Cuestiones relacionadas