nginx下的wordpress 3.0 rewrite规则

分类:CentOS运维 阅读:54206 次

最近在wordpress中启用了多站点的功能,测试都还比较正常。但在文章中插入图片时,就碰到了问题。依照之前的安装设定,其中一个步骤是在wp-content目录下建立blogs.dir目录,用来存放用户上传的文件。在文章中插入图片时,图片是可以正常上传到相应目录下,如:wp-content/blogs.dir/blogid/files/2010/10/image.png,其中blogid是每个不同blog的编号。但在文章中却没有办法正常显示,原因就是由于我用的服务器环境是nginx,所以要更新下 wordpress 3.0 rewrite的规则。

适用于apache的规则如下:

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]

写到网站根目录下的.htaccess文件即可。

nginx下面则需要做些修改,规则如下:

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

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

写入nginx的站点配置文件,并重启nginx服务器即可。

参考:http://imcat.in/nginx-wordpress-3-0-rewrite/