今天把VPS上的LAMP环境更换成了LNMP(Linux+Nginx+Mysql+PHP),主要是为了 提高性能,结果发现permalinks无效了,研究了一下,结果发现是Nginx下的rewrite写法和Apache的不一样,也不是很难改,大同小异。:)
我的Permalinks是 /%category%/%postname%/
先贴一下增加的rewrite规则,
location / {
if ($http_user_agent !~ FeedBurner) {
rewrite ^/feed/?$ http://feeds.feedburner.com/yourfeed last;
}
rewrite ^/wp-admin/$ /wp-admin/ break;
rewrite ^(.*)$ /index.php?q=$1 last;
}
对上面的rewrite规则简单说明一下,(location / 是我的WordPress的目录,如果你是其他,如/blog,/wordpress等,需要相应的修改)
第一条,将WordPress的RSS,强制跳转到Feedburner的RSS。
第二条,对于管理页面的链接,不做rewrite。
第三条,将我的permalinks转成WordPress的规则。
(目前位置,似乎还可以,没有什么问题)
接下,上面的这块规则加到那里才能生效?
1. 如果你已经有了.htaccess文件,想我这样从Apache转过来的,你可以修改.htaccess. 但是你需要在nginx.conf中增加, (.htaccess被include的位置,和下面增加的位置一致即可)
include /path/to/your/.htaccess
2. 直接修改nginx.conf文件,如下
... ...
server
{
listen 80;
server_name openroc.com www.openroc.com;
index index.html index.htm index.php;
root /var/www;
location / {
rewrite ^/feed/?$ http://feeds.feedburner.com/yourfeed last;
rewrite ^/wp-admin/$ /wp-admin/ break;
rewrite ^(.*)$ /index.php?q=$1 last;
}
location ~ .*\.(php|php5)?$
{
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fcgi.conf;
... ...
最后, Restart Nginx, 使新的配置生效。:)