2011-08-19 54 views
0

.htaccess如下:mod_rewrite的匹配錯誤的花樣

RewriteEngine On 
RewriteRule ^client/([0-9a-zA-Z]+)/(.*)$ licensee/client/$2?id=$1 [L,QSA] 
RewriteRule ^licensee/(.*)/$ licensee/$2?id=$1 [L,QSA] 

如果我在瀏覽器中訪問/client/asdf/然而,它採用了第二重寫規則,而不是第一個。如果我註釋掉第二條重寫規則,它將按照預期使用第一條規則。

我無法弄清楚如何在第二個規則可能會配合/client/asdf/ - 有我忽略的東西嗎?

回答

0

當你訪問/客戶/ ASDF /,它的第一個重寫規則相匹配,那麼一個新的請求爲「被許可人/客戶/?ID = ASDF」,你的第二個規則相匹配。

+0

是否將L標誌不能阻止這樣的事情發生?你會推薦什麼? – Tak

+0

@Tak l標誌告訴Apache停止處理所述第一請求重寫規則,並標記爲新的新的請求,匹配第二規則哪個。最好爲你的RewriteRule添加RewriteCond以避免這種情況。 – xdazz