目前.htaccess 文件的主要問題是RewriteCond 指令性地檢查磁盤文件是否存在,就算根本不需要檢查,每一次訪問磁盤都增加了頁面加載時間。
# WordPress開始
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# WordPress結束
當前的WordPress .htaccess 根本就沒有優化。在Webmaster World的一篇帖子上,Mod_Rewrite/.htaccess 的專家Jim Morgan 建議大家用下面的.htaccess文件取代原來的文件:
# WordPress開始
RewriteEngine on
#
#除非你在此之前已經設置了不同的RewriteBase
#你可以刪除或不注釋以下代碼
# RewriteBase 指令:
RewriteBase /
#
#如果這個請求是針對“/”或者是已經寫入到WP中了
RewriteCond $1 ^(index\.php)?$ [OR]
#或者如果這個請求是針對image, css, 或js文件
RewriteCond $1 \.(gif|jpg|css|js|ico)$ [NC,OR]
#如果URL指向存在的文件
RewriteCond %{REQUEST_FILENAME} -f [OR]
#如果URL指向了存在的目錄
RewriteCond %{REQUEST_FILENAME} -d
# 那么跳過重寫直接到WP
RewriteRule ^(.*)$ - [S=1]
#否則指向WP重寫該請求
RewriteRule . /index.php [L]
#
#WordPress結束
以下就是執行前面代碼優化后的效果:
因為index.php文件是存在,因此檢查它的存在性是無意義的,這樣就在對example.com, example.com/ 或example.com/index.php發送請求時就可以避免了不必要的文件檢查。
每次對靜態文件的訪問請求實際上并不需要被重定向。如果該文件確實在磁盤上,這個請求將被響應,否則應該返回文件不存在或者默認子目錄index.php文件。這些靜態文件包括了.jpg,.png,.gif,.css,.js格式的文件以及其他靜態文件。由于大部分博客都包含了很多的靜態文件,所以這將會對頁面加載速度也非常大的影響。