重定向 /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 在新版的链接错误报告中提示这些网址无法访问。©

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

时间过去太久,评论已关闭。
如果您有话要说,请到讨论区留言并给出此文章链接。
谢谢您的理解 :-)