【发布时间】:2010-12-14 10:49:06
【问题描述】:
现状
RewriteRule ^$ /index.php?page=Portal [R=301,L]
当用户访问网站并转到域的“根”URL(正则表达式“^$”)时,他会被重定向到 /index.php?page=Portal
这行得通。
现在我们在 google 索引中有“index.php?page=Portal”,并且我们在互联网的各个位置都有大量指向该页面的链接。
预期的新情况
我们希望门户页面显示在根 url - 没有重定向。没问题...只需删除重定向:
RewriteRule ^$ /index.php?page=Portal [L]
现在我们还希望旧 url 重定向到新位置,这就是我失败但看不到原因的地方:
RewriteCond %{QUERY_STRING} ^page=Portal$
RewriteRule ^index.php$ http://www.jacatu.de/? [R=301,L]
一旦我这样做,我就会进入重定向循环:
(当我在 .htaccess 中更改为 302 时,我看到 302 重定向,所以循环似乎是由 mod_rewrite 引起的)
但是为什么呢?所有规则都标记为 last [L] - 所以我想我可以排除规则 2 触发规则 1。
【问题讨论】:
-
在假设任何事情之前,您可能需要启用 mod_rewrite 日志记录(RewriteLogLevel 2 + RewriteLog /path/to/logfile)。我有几个 mod_rewrite 问题,仅通过阅读 mod_rewrite 日志就解决了。
标签: apache mod-rewrite