如何执行从 index.htm 到 root 的简单 301 重定向?
Posted
技术标签:
【中文标题】如何执行从 index.htm 到 root 的简单 301 重定向?【英文标题】:How do I do this simple 301 redirect from index.htm to root? 【发布时间】:2011-01-29 11:24:04 【问题描述】:我已经阅读了有关重定向的各种参考站点,老实说,我了解的很少。
我目前在我的 .htaccess 中有标准的 WordPress mod_rewrite 重定向规则:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
我的很多推荐人访问了旧 URL http://www.example.com/index.htm
,这给了他们一个错误,我希望他们能够无缝地重定向到 http://www.example.com/
。我相信 301 重定向是最好的方法。
我需要做什么?
【问题讨论】:
【参考方案1】:RewriteEngine On
RewriteCond %THE_REQUEST /index\.html? [NC]
RewriteRule ^(.*/)?index\.html?$ /$1 [R=301,L]
这将递归地将所有出现的 index.html 或 index.htm 转换为目录。
【讨论】:
当你说“递归”时,你的意思是这将适用于站点内的所有子目录,我想? 是的,完全正确。对于所有子目录。 效果很好,非常感谢。请注意,我意识到我需要将此规则放在现有的 Wordpress 之前。 这对我也有用。我必须从 /$1 中删除 / 以使其适用于我的配置(Apache 2.4.7)。【参考方案2】:我不是 100% 确定,但我想应该是 RewriteRule ^index.htm$ / [R=301]
或类似的东西
【讨论】:
【参考方案3】:创建一个index.html,包含代码:
<HTML>
<HEAD>
<META HTTP-EQUIV="refresh" CONTENT="seconds;URL=the-other-url">
</HEAD>
<BODY>
You will be redirected...
</BODY>
</HTML>
其中“秒”是重定向前的延迟时间(以秒为单位)。为即时重定向设置“0”。
“the-other-url”是http://www.example.com/index.php
【讨论】:
这不是 301 重定向,取决于客户端,通常被认为是不好的做法。以上是关于如何执行从 index.htm 到 root 的简单 301 重定向?的主要内容,如果未能解决你的问题,请参考以下文章