自定义 WordPress Permalink(永久链接) 中的反斜杠

分享本文:

在 WordPress 2.2 以后,WordPress 增加了一项新的功能,规范化链接。也就是说,WordPress 将你的博客中所有的链接结构都进行了规范化处理,对于搜索引擎而言,这是一件好事;但也带来一些问题。比较严重的一种情况就是,这可能与网友原先使用的链接结构发生了冲突。

反斜杠和规范化链接

什么样的算 WordPress 所谓的规范化链接呢?也就是说,假如你的博客使用的永久链接permalink)最后中包含了反斜杠/,即 backslash,以我们网站的链接为例,

https://wpchina.org/wordpress-251-chinese-version-release-201/

那么,不仅你的每篇文章最后都有一个反斜杠,而且你的页面、分类、存档、标签等各种页面链接最后也都包含一个/,就像这样:

“关于”页面: https://wpchina.org/about/

“WordPress 插件”分类网址:https://wpchina.org/category/wordpress-plugins/

“2008年5月”存档网址:https://wpchina.org/date/2008/05/

“精彩主题”标签网址:https://wpchina.org/tag/themes-list/

如此等等。

如果你使用的链接结构没有包括反斜杠呢?比如总统博客的链接:

http://jiangzhanyong.com/2008/05/blogging-poll-earning-of-apr-2008-823.html

这样的话,所有的页面、分类、标签的链接最后也都不包含反斜杠了:

“博客赚钱”页面:http://jiangzhanyong.com/make-money-online

“博客调查”分类网址:http://jiangzhanyong.com/category/blogging-poll

“2008年5月”存档网址:http://jiangzhanyong.com/2008/05

WordPress 就是这样将博客的地址给规范化了。

规范化链接带来的反斜杠困扰

WordPress 将网址进行了规范化处理是件好事,但也带来的一个问题。那就是,很多网友的博客地址和原来的不统一;另外,文章页面最后是否带反斜杠并不重要,很多网友喜欢个性化设置;但是如果页面,分类,存档等页面不带有反斜杠,会被搜索引擎误认为是独立文章,这是非常不利于搜索引擎优化的。

WordPress 反斜杠问题解决方案之一

目前有两个办法可以直接修正这个问题。办法之一就是直接修改源代码。

这是 Sheawey’s Blog 上所介绍的一个解决办法,升级到WordPress 2.2后permalink的反斜杠问题。此办法适合 WordPress 2.2+ 任何版本。

打开 <WordPress安装目录>/wp-includes/link-template.php 文件,找到 get_page_link(页面链接),get_attachment_link(附件链接),get_year_link(按年存档页面链接),get_month_link(按月存档页面链接),get_day_link(按天存档页面链接),get_pagenum_link(导航数字页面链接),get_feed_link(文章Feed链接),get_post_comments_feed_link(评论Feed链接),get_author_feed_link(按作者文章Feed链接),get_category_feed_link(按分类Feed链接),get_tag_feed_link(按标签Feed链接),get_search_comments_feed_link(搜索评论Feed链接);

打开 <WordPress安装目录>/wp-includes/category-template.php 文件,找到 get_category_link(分类存档链接),get_tag_link(标签存档链接)等。

在上述函数的最后,都有一个类似的函数:

apply_filters('get_pagenum_link', $result);

而我们需要将相应页面函数修改为:

apply_filters('get_pagenum_link', $result).'/';

这个办法最为直接,将你希望出现反斜杠的页面所对应的函数修改好保存即可。

WordPress 反斜杠问题解决方案之二

显然,上面的办法对于一般网友来说,太麻烦了,而且容易出错。现在有个更简单的方案,可以直接解决这个问题,那就是使用插件。

猫言猫语博客昨天刚刚开发出一款插件 Nice Trailingslashit,解决了这个令网友们困扰的问题。此插件已经被 WordPress 官方插件所收录。此使用非常简单,你只需要上传、激活即可。

关于此插件的详细介绍和下载地址,请查看 WordPress插件:Nice Trailingslashit。

分享本文:


评论: 自定义 WordPress Permalink(永久链接) 中的反斜杠

  • 谢谢你帮我找解决方案,我马上就去试试。
    link-template.php我倒是没有去修改过,因为WP是用301跳转来实现URL统一的,所以我一直在摸索rewrite、redirect方面的代码,看来我是找错方向了。
    还有,WP规范化链接的功能应该是从2.3版之后才有的,要不然2.2里也不会存在反斜杠带来的内容复制的问题了。
    那个插件我很喜欢,正是我所需要的。

    PJP 2008/05/05 11:34 上午 回复
  • 刚才试了一下方案一,发现这个办法已经失效了,会带来循环重定向的问题。Sheawey的这篇文章去年我就看过,当时还是6月份,其实等到9月份2.3版的WP会自动规范化网址之后,这一方法就失效了。而且,对比方案一中介绍的那些函数,在2.5里已经变了些样子。

    不过,方案二处理得很完美,插件很小,我正在用。

    PJP 2008/05/06 12:19 上午 回复
  • 谢谢 PJP 的反馈,看来这个插件真是解决了大问题 🙂

    Jiang 2008/05/06 12:49 上午 回复
  • 我搞不太懂……
    直接让所有文章和页面都带斜杠不就完了……

    物虚生 2008/05/11 3:21 上午 回复
  • 学习了。。。

    海派 2010/01/16 7:26 下午 回复
  • 试试插件方式看看,目前所有插件都不太如意啊。。。

    VeryARM 2014/08/14 5:55 下午 回复

留言给文章 PJP 取消回复

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