Multi Site WordPress rewrite rules in Nginx Multi Site WordPress rewrite rules in Nginx nginx nginx

Multi Site WordPress rewrite rules in Nginx


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


Above is missing a space after the rewrite ^./files/(.(html|jpg|....... you need a space after the $ and before /wp-includes/ms-files.php. Cheers!


This nginx rewrite rules for WordPress have solved my problem perfectly,including changing ex.com/wp-admin to ex.com/wp-admin/.

But i've found a bug inside which wasted me several hours as follows:If the static url include .html just like /%category%/%post_id%.html,you have to insted of:

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