无限循环旧索引文件旧WP安装到新建

时间:2017-02-20 08:42:47

标签: wordpress .htaccess redirect

旧网站有一个(302)重定向/到/index.shtml。

新网站将在/上显示。 出于搜索引擎优化的原因,我们希望从/index.shtml进行301重定向到/.

但是,如果我添加重定向htaccess文件,我们会陷入无限循环。所以某处仍然需要从/到index.shtml重定向,但在哪里?

旧网站安装在根目录/中。 新网站仍然在/ dev /(不是我的选择),但是htaccess确保当有人去/他们实际上在/ dev /中看到该网站时。 htaccess保存在/ dev /.

旧的从/index.shtml重定向到/是什么?

htaccess中我的代码行会产生问题:

  

重定向301 /index.shtml http://www.example.com/

错误可能是由以下原因引起的:

  

IfModule mod_rewrite.c(带括号)

     

RewriteEngine On

     

RewriteBase /

     

RewriteRule ^ index.php $ - [L]

     

RewriteCond%{REQUEST_FILENAME}!-f

     

RewriteCond%{REQUEST_FILENAME}!-d

     

RewriteRule。 /index.php [L]

     

/ IfModule(带括号)

2 个答案:

答案 0 :(得分:1)

您的重定向导致无限循环。它会将 /index.shtml 重定向到已指向 /index.shtml 的文档根目录。

<德尔> 要解决此问题或将** / index.shtml **设置为根目录处理程序,可以使用以下方法之一: 的DirectoryIndex     DirectoryIndex index.shtml DirectoryIndex将在内部将您的** / **主目录转换为** / index.shtml **。 Mod-rewrite:      RewriteEngine ^ $ /index.shtml [L] 这会将您的主目录重写为** / index.shtml **。

如果您想将 /index.shtml 重定向到 / ,可以使用以下规则:

RewriteEngine on
RewriteCond %{THE_REQUEST} /index\.shtml\s
RewriteRule ^index.shtml$ / [L,R]

这会将 /index.shtml 重定向到 / ,而不会导致无限循环。

答案 1 :(得分:0)

我知道我来晚了,但是问题是浏览器而不是网站。 301和302重定向都由最近的浏览器缓存,因此当您将它们更改为指向先前重定向的内容时,您会遇到循环。

您可以使用incognito mode对其进行测试,您会发现重定向循环不再为您服务。这是因为incognito mode不会缓存或观察缓存中自身会话之外的重定向。

不幸的是,无法确保以前的访问者不会陷入循环,这就是为什么您应该非常小心地使用301重定向的原因。 302重定向作为“临时”重定向,在重定向循环中会表现得更好,但是更好的解决方案是使用DirectoryIndex来加载index.shtml作为默认文档而不是重定向到它(这最终导致了你的问题)。