昨天有网友给我留言,想让 tag 标签页的 URL 后面自动加 html,比如 www.abc.com/tag/1,变成 www.abc.com/tag/1.html 。这或许是出于某种 SEO 目的,不过我觉得这样做没什么意义。
实现这个目的的方法还是比较简单的,只是标签页是存档页,需要分页,分页后的链接形式为 tag/1.html/page/2,就无法实现以.html 为结尾,虽然我不懂什么 SEO,但是我觉得这样的链接不好看。昨晚为了这个问题弄了一个晚上也没找到什么好的方法,这里就讲讲不太完美的方法吧,不过这里要说明的是,首先你的 WP 得使用固定链接。
一、链接转换代码
使用文本编辑器打开当前主题目录下的 functions.php,添加以下 php 代码:
// applied when calling get_tag_link()
add_filter(『tag_link』, 『ludou_html_tag_link』, 10, 2);
/**
* tag 页链接转换,将 /tag/tag-name/ 转成 /tag/tag-name.html
*/
function ludou_html_tag_link($tag_link, $tag_id){
return rtrim($tag_link, 『/』) 。 『.html』;
}
二、添加 rewrite 规则
使用文本编辑器打开博客根目录下的.htaccess,也就是存放你的 WordPress 固定链接重写规则的文件。在 RewriteBase / 下一行添加以下代码:
RewriteRule ^tag/(.+).html$ /index.php?tag=$1 [L]
RewriteRule ^tag/(.+).html/page/([0-9]+)$ /index.php?tag=$1&paged=$2 [L]
需要注意的是,如果你的标签页 URL 不是以 tag 开头,那么你需要将以上代码中 tag 改成你的标签前缀。另外.htaccess 中不一定有 RewriteBase / 这一行代码,例如你将 WordPress 安装在子目录 wp,那么这一行代码可能就是这样 RewriteBase /wp/
三、参考内容
WordPress Permalinks: Remove tag base and add the .html extension