2010-08-16 1 views
7

Sto provando a eseguire un'installazione di blog con più domini con WordPress e Nginx. L'ultimo passaggio consiste nel configurare alcune regole di riscrittura in .htaccess (solo apache) per il server web. Come posso tradurre questo in regole di riscrittura Nginx?Regole di riscrittura di WordPress multi sito in 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] 

risposta

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

questo è esattamente ciò di cui avevo bisogno .. thx! – jdelard

3

dovesse mancare uno spazio dopo la riscrittura ^. . /files/( (html | jpg | ....... avete bisogno di uno spazio dopo la $ e prima /wp-includes/ms-files.php acclamazioni

0

Invece di:

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

modificarla in:

location ~ .php$ 

gli permette di dirigere

blog.com/wp-admin 

a

blog.com/wp-admin/ 
1

regole di riscrittura Questo nginx per WordPress hanno risolto il mio problema perfettamente, compresa la modifica ex.com/wp-admin a ex.com/wp-admin/.

ma ho trovato un bug all'interno del quale mi sprecato diverse ore come segue: Se l'URL statici includono .html proprio come /%category%/%post_id%.html, bisogna invece di:

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

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

Oppure, l'errore "404 pagina non trovata" è presente nelle pagine di contenuto!