views:

342

answers:

3

I'm trying to run a multi domain blog installation with Wordpress and Nginx. The last step is to configure some rewrite rules in .htaccess (apache only) for the webserver. How so I translate this into Nginx rewrite rules.

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]

Thanks in advance.

+1  A: 

Hello jdelard,

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;
    }
}
Nicolas Bazire
that is exactly what i needed.. thx!
jdelard
A: 

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!

Kirk
A: 

Instead of:

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

Change it to:

location ~ .php$

Allows it to direct blog.com/wp-admin to blog.com/wp-admin/

BaldwinKoo