mod_rewrite一个条件两个规则

时间:2013-11-15 14:59:41

标签: apache .htaccess mod-rewrite

我有一个条件有两个不同的规则。我无法合并它们。在我的代码中,只有第一个工作,第二个被忽略:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{QUERY_STRING} !-d
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/?$ termitin.php?cat=$1&lang=$2&word=$3    [QSA,L,NC]
</IfModule>

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{QUERY_STRING} !-d
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/?$ result.php?source=$1&target=$2&q=$3 [QSA,L,NC]
</IfModule>

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这种情况是错误的:

RewriteCond %{QUERY_STRING} !-d

正确的语法是:

RewriteCond %{REQUEST_FILENAME} !-d

表示如果请求不是用于目录,则执行重写。

除此之外,您的主要问题是您在两个规则中使用相同的匹配模式和相同条件:

^([^/\.]+)/([^/\.]+)/([^/\.]+)/?$

您需要清楚地定义您的要求,例如在什么条件下将执行哪个脚本。