我使用apache的mod_rewrite
來使我的應用程序的URL很漂亮。我掌握了mod_rewrite
的基礎知識 - 我的應用程序的幾個部分使用簡單和可預測的重寫。用mod_rewrite處理多個可選參數
但是,我寫了一個博客功能,它使用了幾個不同的參數。
http://www.somedomain.com/blog/
http://www.somedomain.com/blog/tag/
http://www.somedomain.com/blog/page/2/
,我有以下規則在我的.htaccess:
RewriteRule ^blog/ index.php?action=blog [NC]
RewriteRule ^blog/(.*) index.php?action=blog&tag=$1 [NC]
RewriteRule ^blog/page/(.*) index.php?action=blog&page=$1 [NC]
但是,規則不在一起工作。計算機符合第一條規則,然後停止處理 - 儘管以我的思維方式,它不應該匹配。我告訴機器要匹配^blog/
,它會繼續,並匹配^blog/tag/
和^blog/page/2/
,這對我來說似乎是錯誤的。
我的規則出了什麼問題?爲什麼他們沒有按照我的意圖進行評估?
編輯:答案是終止使用$
輸入,並重新排序的規則,非常輕微:
RewriteRule ^blog/$ index.php?action=blog [NC,L]
RewriteRule ^blog/page/(.*)$ index.php?action=blog&page=$1 [NC,L]
RewriteRule ^blog/(.*)$ index.php?action=blog&tag=$1 [NC,L]
這些規則產生預期的效果。
DAV,你的「輸入端」的一部分是非常有益的。我會更新我的問題以反映答案。謝謝! – EvilChookie 2009-09-16 01:10:29