2010-05-20 188 views
2

使用RegEx或Multiples規則的單個RewriteRule更好嗎?規則的數量較少,需要服務器查詢?會有任何性能差異?什麼是.htaccess RewriteRule最佳實踐?

繼承人是一個例子,幾乎所有的正則表達式組可選一條規則:

RewriteRule ^gallery/?([\w]+)?/?([\w]+)?/?([\d]+)?/?([\w]+)/?$ /gallery.php?$1=$2&start=$3&by=$4 [NC] 

這裏有一些規則列表將取代上面的一個:

RewriteRule ^gallery/category/([\w]+)/$ /gallery.php?category=$1& [NC] 
RewriteRule ^gallery/category/([\w]+)/([\d]+)/$ /gallery.php?category=$1&start=$2 [NC] 
RewriteRule ^gallery/category/([\w]+)/([\d]+)/([\w]+)/$ /gallery.php?category=$1&start=$2&by=$3 [NC] 
... 
RewriteRule ^gallery/tag/([\w]+)/$ /gallery.php?category=$1& [NC] 
RewriteRule ^gallery/tag/([\w]+)/([\d]+)/$ /gallery.php?category=$1&start=$2 [NC] 
RewriteRule ^gallery/tag/([\w]+)/([\d]+)/([\w]+)/$ /gallery.php?category=$1&start=$2&by=$3 [NC] 
... 

我會很高興聽到您的選擇或個人經驗。

回答

2

不是說我已經對任何東西進行了基準測試,但是如果功能相同,我猜想單個重寫規則比幾個更有效。無論如何,重寫規則(甚至數百)很少會有明顯的性能下降(我幾年前已經讀過這個基準),除非他們代理請求或統計路徑。

總之,我建議你去更可讀的東西。

在您的具體示例中,我認爲單個正則表達式比重複更具可讀性。但是,它們並不等同 - 第一個總是包含所有參數。如果這有所作爲(很可能不會),那麼複製可能會更好。

+0

感謝您的意見,我想我會使用單個查詢,因爲它會更容易維護,靈活和非冗餘。 – Pablo 2010-05-21 05:41:24