0

我试图了解 Mod-rewrite 规则是如何工作的。

我现在有这个,第一条规则有效,第二条规则无效。这里的解决方案是什么?

RewriteEngine On

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

2 回答 2

0

您的第一条规则中有一个L标志,这意味着“最后一条规则,停止重写并且不评估任何其他规则”。

于 2012-06-03T20:55:33.263 回答
0

由于两个 rewriteRules 中的正则表达式模式相同,第二条规则不起作用。所以规则 1 将首先执行跳过下面的其他类似规则。

为了避免这种混淆,您可以简单地更改第二条规则的路径名模式

 RewriteRule ^path2/([^/.]+)/?$ 

这接受以下格式的路径名:

 /path2/foo

改写

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f  
RewriteRule ^([^/\.]+)/?$ ?page=project&name=$1 [NC,L]
RewriteRule ^path2/([^/\.]+)/?$ index.php?category=$1 [NC,L]
于 2015-05-30T15:01:39.100 回答