无限循环旧索引文件旧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安装到新的主要内容,如果未能解决你的问题,请参考以下文章

为啥以 char 作为索引的循环会无限循环?

一个简单的 301 重定向会在我的 htaccess 中创建一个无限循环?

WordPress 自定义帖子类型无限循环

如何在反应原生渲染中以无限循环返回数组项视图?

Vue无限循环......在方法中

PHPMyAdmin 单点登录身份验证无限重定向循环