重定向 /index.html 到 /

基于 WordPress 的网站在设置了固定链接之后,网页地址基本上就固定了下来。但是也有特殊情况出现,比如在 Google 统计中就可能出现网址变体。今天通过 .htaccess 中的 URL ReWrite 功能将这些变体进行了统一,使之都能正确打开相应的页面。

背景介绍

我现在的 WordPress 文章固定链接设置为如下的形式:

/blog/post-url/

基本上所有的传入链接都没有问题,是这种形式。但是偶然发现 Google Analytics 中内容概述一节却显示为 /blog/post-url/index.html,后面多了一节 index.html。如下图所示。

Google 统计中的内容概述

如果直接点击链接前面的访问快捷图标打开该页面的话,就会遇到错误,显示无法找到该页面。这是因为我的网站主机将 /blog/post-url//blog/post-url/index.html 判断为不同的页面了。

今天要解决的问题就是通过在 .htaccess 中增加 ReWrite 语句来进行 URL 重写,使服务器能够正确判断。

早些时候曾经通过 .htaccess 中的 URL ReWrite 功能将网站首页地址统一为 cnzhx.net。虽然也想到要针对每个页面写类似的规则,但是当时没有找到合适的方法。

实现方法

完成这一功能的 ReWrite 语句如下,其中以 # 开头的语句为注释,在执行中不起作用。

# 删除网址最后的 / 后面的 index.html
# 例如 /xxx/index.html 重写为 /xxx/
RewriteCond %{REQUEST_URI} ^(.*)\/index\.html
RewriteRule ^(.*)\/index\.html$ $1/ [R=301,L]

将上述语句放在确定网站唯一入口地址一文中所列语句之后即可。

这里没有考虑 .php 这样的链接,因为暂时没有发现任何地方有这样的链接链入到本站,估计是不需要的。如果想加上的话可以将上面的代码中最后两行复制一份,并将其中的 .html 改为 .php 后放在上述语句之后(未测试,请自行测试)。

敬告

如果您将上面的代码应用到自己的网站,请注意:

  1. 因为 .htaccess 会影响到全站,稍有错误即可能出现全站访问出错,比如代码为 500 的内部错误,所以请仔细检查代码是否写错,包括空格、句点、斜杠反斜杠等等;另请在应用后进行简单的测试。
  2. 不能保证上述代码绝对不出问题,至少我目前没有发现问题,正在使用。万一有个别特殊情况出问题了,本站概不负责。
  3. 欢迎提供反馈意见!

2012.03.20

很奇怪,难道仅仅是文本形式的链接,没有做成超链接,这样也会被 Google 的机器人 follow 吗?文中举例的时候,本来都在链接前面加上 http://cnzhx.net 了,可是 Google 在新版的链接错误报告中提示这些网址无法访问。©

本文发表于水景一页。永久链接:<http://cnzhx.net/blog/hide-index-html-in-url/>。转载请保留此信息及相应链接。

雁过留声,人过留名

您的电子邮箱地址不会被公开。 必填项已用 * 标注

特别提示:与当前文章主题无关的讨论相关但需要较多讨论求助信息请发布到水景一页讨论区的相应版块,谢谢您的理解与合作!请参考本站互助指南
您可以在评论中使用如下的 HTML 标记来辅助表达: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>