最近接觸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