最近接触WP Super Cache
,该插件要求固定连接必须是重写的,故用到Rewrite。php
个人是这样配置的:css
/usr/local/nginx/conf/rewrite/wordpress.conf
html
location / { if (-f $request_filename/index.html){ rewrite (.*) $1/index.html break; } if (-f $request_filename/index.php){ rewrite (.*) $1/index.php; } if (!-f $request_filename){ rewrite (.*) /index.php; } }
而后在虚拟主机文件里添加linux
include /usr/local/nginx/conf/rewrite/wordpress.conf;
便可。nginx
完整的vhost的配置文件:wordpress
server { listen 80; server_name me.52fhy.com; index index.php index.html index.htm; root /52fhy.com/wordpress/; location / { if (-f $request_filename/index.html){ rewrite (.*) $1/index.html break; } if (-f $request_filename/index.php){ rewrite (.*) $1/index.php; } if (!-f $request_filename){ rewrite (.*) /index.php; } } location ~ .*\.(php|php5)?$ { #fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 1h; } access_log /www/log/me.52fhy.com.log; }
location / { #1 if (-f $request_filename/index.html){ rewrite (.*) $1/index.html break; } #2 if (-f $request_filename/index.php){ rewrite (.*) $1/index.php; } #3 if (!-f $request_filename){ rewrite (.*) /index.php; } }
对于后台http://me.52fhy.com/wp-admin/options-writing.php
这种连接将直接匹配#3
,实际上这时候不须要任何匹配。故可在#2
前添加.net
if (-f $request_filename){ break; }
或者所有更新更新为:插件
location / { index index.html index.php; if (-f $request_filename) { break; } if (!-e $request_filename) { rewrite . /index.php last; } }
另外,在Apache下,利用mod_rewrite来实现URL的静态化。unix
.htaccess
的内容以下:code
# BEGIN WordPress RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress
参考:
一、Nginx下WordPress的Rewrite - 平凡的世界
http://www.ccvita.com/336.html
二、wordpress后台访问时没有wp-admin报404错误 | 技术部
http://www.jishubu.net/yunwei/linuxyunwei/420.html