2010-08-16 6 views
7

J'essaie d'exécuter une installation de blog multi-domaine avec WordPress et Nginx. La dernière étape consiste à configurer certaines règles de réécriture dans .htaccess (apache uniquement) pour le serveur Web. Comment puis-je traduire ceci en règles de réécriture Nginx?Règles de réécriture de plusieurs sites WordPress dans 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] 

Répondre

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

c'est exactement ce dont j'avais besoin .. thx! – jdelard

3

manque dessus d'un espace après la réécriture ^. . /fichiers/( (html | jpg | ....... vous avez besoin d'un espace après le $ et avant /wp-includes/ms-files.php Vive

0

Au lieu de:

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

Modifier à:

location ~ .php$ 

permet de diriger

blog.com/wp-admin 

à

blog.com/wp-admin/ 
1

Cette règle de réécriture de nginx pour WordPress a résolu mon problème parfaitement, y compris en changeant ex.com/wp-admin en ex.com/wp-admin/.

Mais je l'ai trouvé un bug dans ce qui m'a gaspillé plusieurs heures comme suit: Si l'URL statique comprennent .html comme /%category%/%post_id%.html, vous devez 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; 
 
    }

Changez-le pour:

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; 
 
    }

Ou, nous avons eu une erreur '404 page introuvable' dans les pages de contenu!

Questions connexes