第一个条件之后Apache mod_rewrite停止

我试图把这个URL改写如下:

  • fr.example.com/tag/movies
  • example.com/catch.php?tag=movies
  • fr.example.com » domain.com/catch.php?country=fr

对于这些,我有一个.htaccess文件中的以下mod_rewrite规则

按照这个顺序。

现在,第一个RewriteRule之后的L应该结束处理,并将其redirect到子域名+标签URL,但是不会。 例如, fr.example.com/tag/movies发送到catch.php?country=fr ,这是.htaccess文件中的最后一个条件。

发现第一个L后不应该停止吗?

回答

那么,事实certificate, [L]标志根据上下文( .htaccess / <Directory>不同于httpd.conf )的不同而有所不同,正如您在这里所看到的。

因此,为了使其工作,只需将规则放置在<VirtualHost> (NOT <Directory> )中,并将/添加到每个URI( /catch.php /tag ,…)。 而已。

L标志在任何情况下都不会停止处理。 我build议检查堆栈溢出这个线程,特别是链接到Apache重写指南,并打开RewriteLog,以便您可以确认如何mod_rewrite处理您的规则。