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

typecho

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

https://atpx.com/2021/06/laid-back-guide/

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

https://atpx.com/post/laid-back-guide/

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

1
2
3
4
5
6
7
8
9
<?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 行中将地址重新组合就行了。

如果你认为这篇文章还不错,可以考虑为我充电 ⚡️