最近研究了下 SEO,发现文章的 url 链接其实对 SEO 也有一定的影响,虽然影响不大,但还是准备随手优化一下,修改 typecho 文章的永久链接,并将旧链接301重定向跳转到新链接。

typecho

我原来的永久链接设置的是 /{year}/{month}/{slug}/ 地址中包含了文章发表的日期,其实这样做并不利于SEO,比如今年发布了一篇名为 2021年躺平指南 的文章,
那么url地址就是:

https://www.zatp.com/2021/06/laid-back-guide/

但是如果我明年还想继续躺平,就要更新这篇文章,将标题改为 2022年躺平指南 但是url地址中的年份依然是2021,这样就很不合理,当然可以顺带把url也修改了,旧链接设置好跳转就行了,但这样就麻烦了。而且似乎对 Google 来说 url 越短越利于 SEO,于是决定修改为下面的格式:

https://www.zatp.com/post/laid-back-guide/

在 typecho 后台设置后就需要做好旧链接跳转了。我们可以直接通过 php 实现301跳转,这里打开主题的 404.php 文件,加入以下内容:

<?php
$error_url = '//'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$old_url = strstr($error_url, '20');
if($old_url != "" ||$old_url != null) {
  $new_url = substr($old_url, 7);
  header('HTTP/1.1 301 Moved Permanently');
  header("location://".$_SERVER['HTTP_HOST']."/post".$new_url);
}
?>

这里简单说明一下:

第3行 $old_url = strstr($error_url, '20'); 的意思返回以 "20" 开头包含 "20" 以及之后的值,也就是 2021/06/laid-back-guide/

第5行 $new_url = substr($old_url, 7); 的意思是返回从第8个字符 "/" 开始以及之后的值,也就是 /laid-back-guide/

最后在第7行中将地址重新组合就行了。