如何执行从 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 重定向?的主要内容,如果未能解决你的问题,请参考以下文章

强制浏览器重新加载 index.htm

js跨域问题

图片服务器报错403

什么是文件的相对路径?怎么把文件路径改为相对路径?

H3C交换机S5500划分VLAN

ThinkPHP 3.2 路径问题