最近伺服器流量暴增,伺服器的 Apache 進程出現進程不斷增長而出現進程不能及時殺死釋放內存的問題,由 pre-fork 模式更改為 worker 模式也不能起到明顯效果。最後只能將 WordPress 部落格整體由 LAMP 切換到 LEMP 環境,訪問正常後,發現 Nginx 環境下的偽靜態設置與 Apache 的.htaccess 設置方式略有不同,在此記錄一下。
Apache 環境下使用.htaccess 實現 WordPress 的通用偽靜態效果
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
Nginx 環境下需要做如下重寫,適用於 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;
}
}