旧的网站有一个(302)从重定向/到/index.shtml。
新网站将是/不是可见。对于搜索引擎优化的原因,我们希望有一个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(用方括号)
RewriteEngine叙述在
RewriteBase /
重写规则^ $的index.php - [L]
的RewriteCond%{} REQUEST_FILENAME!-f
的RewriteCond%{} REQUEST_FILENAME!-d
重写规则。的index.php [L]
/ IfModule(带括号)
。至于它重定向/index.shtml到您的文档根,其已指向/index.shtml您的重定向是导致无限循环。
如果你想重定向到/index.shtml /,您可以使用以下规则:
RewriteEngine on
RewriteCond %{THE_REQUEST} /index\.shtml\s
RewriteRule ^index.shtml$ / [L,R]
这将重定向到/index.shtml /不引起无限循环。
我知道我来了迟到了,但问题是,浏览器不是网站。 301个302重定向都通过最新的浏览器缓存,因此,当你改变它们重新指向先前重定向东西,你将体验的循环。
你可以用incognito mode
测试它,你会看到重定向循环将不会发生你了。这是因为incognito mode
不缓存或遵守的重定向缓存自己的会话之外。
不幸的是,有没有办法,以确保访客先前不被卡住在循环这就是为什么你应该使用301个重定向非常小心。 302个重定向,作为“临时”重定向,会表现得更好重定向循环,但更好的解决办法是使用DirectoryIndex
加载index.shtml作为默认文档,而不是重定向到它(这是最终问题所在)。