Apache mod_重写一个条件两个规则

Apache mod_重写一个条件两个规则,apache,.htaccess,mod-rewrite,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 ^([^/\.]+)/([^/\.]+)/([^/\.]+)/?$ 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>

重新启动发动机
重写cond%{QUERY_STRING}-D
重写规则^([^/\.]+)/([^/\.]+)/([^/\.]+)/?$termitin.php?cat=$1&lang=$2&word=$3[QSA,L,NC]
重新启动发动机
重写cond%{QUERY_STRING}-D
重写规则^([^/\.]+)/([^/\.]+)/([^/\.]+)/?$result.php?source=$1&target=$2&q=$3[QSA,L,NC]

谢谢您的帮助。

这种情况是错误的:

RewriteCond %{QUERY_STRING} !-d
正确的语法是:

RewriteCond %{REQUEST_FILENAME} !-d
这意味着如果请求不是针对目录,则执行重写

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

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

您需要明确定义您的需求,例如在什么条件下执行哪个脚本。

L
中的
[]
表示最后一条规则。e、 g.停止处理并立即转到指定的url。我创建了第一个[QSA,NC]并删除了[L],但第二个仍然不起作用。我用您建议的语法替换了它们,同样的问题。只有第一个有效,第二个无效。我需要合并它们。请重新检查我编辑的答案。你需要清楚地定义你的需求我需要搜索两个页面:termitin.php和result.php,它们都有相同的结构,但结果不同:termitin.php提供了类似Chemistry/en/test和result.php的内容。php提供了en/de/test通用字典和技术字典。这是无法完成的,因为匹配模式完全相同不一样。e、 g.您需要在结果之前添加前缀,如:
result/en/de/test
进行此更改后,这两行都可以工作,但我需要这两行。没有办法吗?