WordPress是一個(gè)非常流行的Blog系統(tǒng),它可以利用Apache的mod_rewrite來(lái)實(shí)現(xiàn)URL的靜態(tài)化。安裝好的WordPress在配置了持久鏈接之后,會(huì)在網(wǎng)站的根目錄下(如果可寫(xiě))生成一個(gè).htaccess文件,這個(gè)文件可以指示Apache如何進(jìn)行URL重寫(xiě)(如果服務(wù)器配置為允許使用htaccess的指令的話),它的內(nèi)容如下:
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L] # END WordPress
這個(gè)文件的意思就是,如果當(dāng)請(qǐng)求的文件不存在,那么把請(qǐng)求內(nèi)部重定向到/index.php。WordPress會(huì)自己分析請(qǐng)求的URL,來(lái)判斷顯示哪個(gè)頁(yè)面。 在上次配置了Nginx+PHP之后,由于Nginx不支持Apache的.htaccess文件,要實(shí)現(xiàn)持久連接靜態(tài)化,我們必須手工配置Nginx的文件。首先找到Nginx的配置文件,默認(rèn)編譯后的配置文件在/usr/local/nginx/conf/nginx.conf;Ubuntu通過(guò)包安裝的配置文件位于/etc/nginx/nginx.conf,也可以編輯vhost的配置文件,放在了/etc/nginx/sites-available下。 以下是基本的配置(Ubuntu下的范例):
index index.html index.php;
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$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
}
還可以有很多種不同配置方式,例如不改寫(xiě)所有包含wp-的url等。此配置考慮了目錄下的索引文件index.html和index.php。-f指令表示測(cè)試文件是否存在(不考慮文件和目錄的區(qū)別),!-f則表示不存在。注意在重寫(xiě)url到index.html后面有個(gè)break,而重寫(xiě)到index.php后沒(méi)有break。因?yàn)閔tml文件不需要任何額外工作可以直接發(fā)送到客戶端,所以重寫(xiě)規(guī)則在這里終止,下面就直接讓nginx發(fā)送文件。而.php文件需要進(jìn)一步發(fā)送到fastcgi進(jìn)程來(lái)運(yùn)行,Nginx會(huì)繼續(xù)判斷該文件符合第二個(gè)部分location ~ .*\.php$的規(guī)則,并進(jìn)行FastCGI的轉(zhuǎn)發(fā)。 大家可以將以上內(nèi)容保存為wordpress.conf,然后在自己的vhost配置,即server節(jié)中應(yīng)用該配置文件,例如(以下為Ubuntu進(jìn)行的配置):
listen 80;
server_name eee-eee.com *.eee-eee.com; root /var/www/eee-eee.com; include /etc/nginx/wordpress.conf;
}
接下來(lái)讓Nginx重新載入配置文件,便可使用WordPress的持久鏈接了。





