现状
RewriteRule ^$ /index.php?page=Portal [R=301,L]
当用户访问网站并转到" root"域名网址(RegExp" ^ $")他被重定向到/index.php?page=Portal
那是在工作。
现在我们有" index.php?page = Portal"在谷歌索引中,我们在互联网上的各个位置都有大量指向该页面的链接。
预期的新情况
我们希望门户网站页面显示在根网址上 - 没有重定向。这没问题......只需删除重定向:
RewriteRule ^$ /index.php?page=Portal [L]
现在我们还希望将旧网址重定向到新位置,这就是我失败的地方,但无法理解原因:
RewriteCond %{QUERY_STRING} ^page=Portal$
RewriteRule ^index.php$ http://www.jacatu.de/? [R=301,L]
一旦我这样做,我就会进入重定向循环:
(当我在.htaccess中更改为302时,我看到302重定向,所以循环似乎真的是由mod_rewrite引起的)
但为什么呢?所有规则都标记为最后 [L] - 所以我想我可以排除规则2触发规则1.
答案 0 :(得分:0)
我按照Jacek Prucia的建议启用了日志记录,实际上看起来URL中的[L]不会停止执行。这两条规则都得到了处理。
我现在将第一次重写更改为
RewriteRule ^$ /index.php?page=Portal&int=1 [L]
因此它与内部重写的RewriteCond不匹配所以理论上我的问题就解决了。不过,要知道为什么它做了它所做的事情会很高兴。 :)