2013-03-29 32 views
0

我使用apache和.htacess來重寫我的url。url重寫中的可選參數

我想在我的ad.php頁面中有一個可選參數「mess」。我寫道:

RewriteRule ^ad-([A-Za-z0-9-]+)/?$ ad.php?id=$1 [NC,L] 
RewriteRule ^ad-([A-Za-z0-9-]+)-([A-Za-z0-9-]+)/?$ ad.php?id=$1&mess=$2 [NC,L] 

但似乎只有第一條規則被考慮。 ad-100和ad-100-1應該提供不同的東西,但他們不會。當我刪除第一條規則時,ad-100不再工作(顯然),ad-100-1現在正在工作,因爲它採用了第二條規則。

你知道我可以有可選參數嗎?我應該將這兩條規則合爲一體嗎?

+0

您是否嘗試過交換兩條規則? –

回答

2

這應該工作:

RewriteCond %{REQUEST_URI}    !ad\.php    [NC] 
RewriteRule ^ad-([^-]+)/?$   ad.php?id=$1   [NC,L] 
RewriteCond %{REQUEST_URI}    !ad\.php    [NC] 
RewriteRule ^ad-([^-]+)-([^/]+)/? ad.php?id=$1&mess=$2 [NC,L] 

或者,你可以用一個規則爲這兩個參數是否存在具有當只有一個參數mess值空也沒有問題。像這樣:

RewriteCond %{REQUEST_URI}    !ad\.php    [NC] 
RewriteRule ^ad-([^-]+)-?([^/]+)?/? ad.php?id=$1&mess=$2 [NC,L] 
+0

它的工作原理。謝謝 –