基于 WordPress 的网站在设置了固定链接之后,网页地址基本上就固定了下来。但是也有特殊情况出现,比如在 Google 统计中就可能出现网址变体。今天通过 .htaccess 中的 URL ReWrite 功能将这些变体进行了统一,使之都能正确打开相应的页面。
背景介绍¶
我现在的 WordPress 文章固定链接设置为如下的形式:
/blog/post-url/
基本上所有的传入链接都没有问题,是这种形式。但是偶然发现 Google Analytics 中内容概述一节却显示为 /blog/post-url/index.html
,后面多了一节 index.html
。如下图所示。
如果直接点击链接前面的访问快捷图标打开该页面的话,就会遇到错误,显示无法找到该页面。这是因为我的网站主机将 /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
后放在上述语句之后(未测试,请自行测试)。
敬告¶
如果您将上面的代码应用到自己的网站,请注意:
- 因为 .htaccess 会影响到全站,稍有错误即可能出现全站访问出错,比如代码为 500 的内部错误,所以请仔细检查代码是否写错,包括空格、句点、斜杠反斜杠等等;另请在应用后进行简单的测试。
- 不能保证上述代码绝对不出问题,至少我目前没有发现问题,正在使用。万一有个别特殊情况出问题了,本站概不负责。
- 欢迎提供反馈意见!
2012.03.20
很奇怪,难道仅仅是文本形式的链接,没有做成超链接,这样也会被 Google 的机器人 follow 吗?文中举例的时候,本来都在链接前面加上 http://cnzhx.net 了,可是 Google 在新版的链接错误报告中提示这些网址无法访问。©
本文发表于水景一页。永久链接:<http://cnzhx.net/blog/hide-index-html-in-url/>。转载请保留此信息及相应链接。