2012-06-03 116 views
0

我想了解Mod重寫規則是如何工作的。用Mod重寫多條規則

我現在有這個權利,第一條規則起作用,第二條不起作用。這裏有什麼解決方案?

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/\.]+)/?$ ?page=project&name=$1 [NC,L] 
RewriteRule ^([^/\.]+)/?$ index.php?category=$1 [NC,L] 

回答

0

你在你的第一條規則,這意味着「最後一條規則,停止重寫,不評價任何其他規則」有L標誌。

+0

我知道了,和第二條規則仍然如果我刪除它不工作。 – user1434010

+0

嘗試在斜線處添加替換網址:'/index.php?category = $ 1'。在我的測試中,它使用了斜線,而沒有使用斜線'mod_rewrite'完成了一些完全瘋狂的事情:嘗試使用我的完整文件系統路徑作爲URL路徑將index.php文件創建爲HTTP子請求。 – lanzz

+0

嗯。無論我是否放下斜線,都沒有任何區別。 – user1434010

0

第二個規則不起作用,因爲在兩個rewriteRules中都有相同的正則表達式模式。因此,規則1將首先跳過下面的其他類似規則。

爲了避免這種困惑,你可以簡單地改變路徑名和第二條規則模式

​​

這將接受以下格式的路徑名:

/path2/foo 

REWRITE

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/\.]+)/?$ ?page=project&name=$1 [NC,L] 
RewriteRule ^path2/([^/\.]+)/?$ index.php?category=$1 [NC,L]