2015-12-21 50 views
2

最近,我改变了我的网站从静态html WordPress的,并在此过程中我一直在重定向我所有的前任和不存在的页面与我的。 htaccess文件,每当谷歌显示我抓取错误。直到今天,我已成功地将所有爬行错误重定向。我的老index.html抛出一个抓取错误,当我使用:重定向不存在的index.html在WordPress的主页是造成过多的重定向浏览器

Redirect 301 /index.html http://www.example.com 

...我得到这个从我的浏览器:

重定向过多发生试图打开www.example.com。如果您打开被重定向到开,然后被重定向到开原页面其他网页的网页可能发生这种情况。*

因为我已经从我的.htaccess文件中删除上面的重定向,并且将只与爬行生活错误,如果我不能得到解决。但我在想有人知道如何解决这个问题,如果是的话,如果你让我知道如何,我会很感激。

+1

您是否在htaccess中有任何其他重定向 – starkeen

+0

现在目录索引文件是什么? – starkeen

+0

是的,就像我在原文中所说的那样,“我一直在用我的.htaccess文件重定向所有以前和不存在的页面,只要Google显示我抓取错误,我已经成功地将所有抓取错误重定向到今天。 “当我进入我的Google网站管理员帐户并点击抓取错误时,我需要访问我网站上的一个页面,页面上显示“找不到页面”。有了过去我发现的所有其他抓取错误,我只是使用我的.htaccess文件将抓取错误链接重定向到我希望它转到的页面并修复它。不是这样的错误。它似乎索引必须以不同的方式处理。 – MsEvette

回答

1

如果您的DirectoryIndex设置为index.html(作为第一个选项),您可能会遇到此重定向循环,这很可能是您服务器上的默认设置。

基本上,当你访问一个目录,例如。 http://example.com/(根目录),那么DirectoryIndex指令会告诉服务器要通过哪个文件(通过内部重写)。例如。 http://example.com/index.html。这然后种子重定向循环。

既然你使用WordPress,你可以在.htaccess改变这种偏爱index.php代替。例如,在你的.htaccess文件的顶部:

DirectoryIndex index.php index.html 

但是,您也可以通过使用mod_rewrite(这可能是最好)解决这个问题。事实上,自从WordPress的已经使用了mod_rewrite(如RewriteRule指令),那么你也应该使用mod_rewrite为您重定向,而不mod_alias中(如Redirect指令)。您不应该混合使用.htaccess中的两个模块的重定向,因为您可以轻松获得冲突。不同的模块在不同的时间执行,不管他们在.htaccess中的顺序如何。

通过使用mod_rewrite,你可以通过对THE_REQUEST检查避免重定向循环。例如:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html [NC] 
RewriteRule ^index\.html$/[R=301,L] 
+1

感谢w3d,您上面张贴的mod_rewrite修复了我的错误! – MsEvette