无限循环旧索引文件旧WP安装到新
Posted
技术标签:
【中文标题】无限循环旧索引文件旧WP安装到新【英文标题】:Infinite loop old index file old WP installation to New 【发布时间】:2017-07-09 10:55:35 【问题描述】:旧网站有一个从 / 到 /index.shtml 的 (302) 重定向。
新站点将显示在 / 上。 出于 SEO 的原因,我们希望将 301 重定向从 /index.shtml 到 /。
但是,如果我添加重定向 htaccess 文件,我们就会陷入无限循环。所以在某个地方仍然必须有一个从 / 到 index.shtml 的重定向,但是在哪里呢?
旧站点安装在根目录/。 新站点仍在 /dev/ 中(不是我的选择),但是 htaccess 确保当有人访问 / 时,他们实际上会在 /dev/ 中看到该站点。 htaccess 保存在 / 而不是 /dev/ 中。
从 /index.shtml 到 / 的旧重定向在哪里?
我在 htaccess 中产生问题的代码行:
重定向 301 /index.shtml http://www.example.com/
错误可能是由以下原因引起的:
IfModule mod_rewrite.c(带括号)
重写引擎开启
重写基础/
重写规则 ^index.php$ - [L]
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
重写规则。 /index.php [L]
/IfModule(带括号)
【问题讨论】:
【参考方案1】:您的重定向导致无限循环。因为它将 /index.shtml 重定向到您的文档根目录,该根目录已经指向 /index.shtml 。
要解决此问题或将 **/index.shtml** 设置为您的根目录处理程序,您可以使用以下方法之一: 目录索引 DirectoryIndex index.shtml DirectoryIndex 将在内部将您的 **/** 主目录转发到 **/index.shtml** 。 模组重写: 重写引擎 ^$ /index.shtml [L] 这会将您的主目录重写为 **/index.shtml** 。如果要将 /index.shtml 重定向到 / ,可以使用以下规则:
RewriteEngine on
RewriteCond %THE_REQUEST /index\.shtml\s
RewriteRule ^index.shtml$ / [L,R]
这会将 /index.shtml 重定向到 / 而不会导致无限循环。
【讨论】:
感谢您发布此内容!【参考方案2】:我知道我迟到了,但问题是浏览器而不是网站。 301 和 302 重定向都被最近的浏览器缓存,因此当您将它们更改为指向以前重定向的内容时,您会遇到循环。
您可以使用incognito mode
对其进行测试,您会发现重定向循环不会再发生了。这是因为incognito mode
不会缓存或观察缓存以查找其自身会话之外的重定向。
不幸的是,没有办法确保以前的访问者不会陷入循环,这就是为什么您应该非常小心使用 301 重定向。 302 重定向,作为“临时”重定向,在重定向循环中会表现得更好,但更好的解决方案是使用 DirectoryIndex
将 index.shtml 作为默认文档加载而不是重定向到它(这最终导致了你的问题)。
【讨论】:
以上是关于无限循环旧索引文件旧WP安装到新的主要内容,如果未能解决你的问题,请参考以下文章