前言
本文仅用于开启typecho地址重写且适合本站跳转路径的情况下。
在建站时,因认为 /{文章分类}/{文章ID}.html
的文章路径好看。所以一直都没有去修改过,导致被百度收录久了之后又想改文章路径怕百度的收录全掉了,现在带来 301跳转 的教程,让百度认为文章只是迁移到了新的地方而不是删除了文章。(记得去提交 百度改版
哦)
代码
适用路径:website.com/{文章分类}/{文章ID}.html
适用路径:website.com/{文章分类}/{文章ID}.html/
适用路径:website.com/{文章分类}/{文章ID}.html/comment-page-{评论页}
跳转路径:website.com/{文章ID}.html
跳转路径:website.com/{文章ID}.html/comment-page-{评论页}#comments
- 打开所使用的主题下的
404.php
文件(一般页面不存在会使用主题的404错误页面),在适合
的位置插入以下代码
<?php
// 旧链接 301跳转 新链接
// 适用于 {文章分类}/{文章ID}.html 跳转到 {文章ID}.html
$Host = $_SERVER['HTTP_HOST']; // 获取当前主机域
$Url = $_SERVER['REQUEST_URI']; // 获取当前访问网页的相对路径
$pattern = '/^\/([a-z]+)\/([0-9]+).html\/?(comment-page-[0-9]+)?$/'; // 正则匹配规则(包含各种情况,如 1.html/、1.html/comment-page1)
if (strpos($Url, 'comment-page') !== false) { // 检查访问路径是否包含 comment-page 字符串
$replacement = '/$2.html/$3#comments'; // 正则替换规则(包含评论路径)
} else {
$replacement = '/$2.html'; // 正则替换规则(默认)
}
if (preg_match($pattern, $Url)) { // 访问路径与正则匹配成功匹配时
$newUrl = preg_replace($pattern, $replacement, $Url); // 进行字符串替换
header('HTTP/1.1 301 Moved Permanently'); // 请求HTTP头301
header("location://".$Host.$newUrl); // 跳转至新页面
}
?>
- 保存此次修改后,访问之前的链接即可跳转到新的地址啦!~如果有什么不明白的欢迎评论。
百度改版
打开 https://ziyuan.baidu.com/rewrite/,点击添加 改版规则>规则改版 填入以下内容(推荐尽量填写百度有收录的链接哦)
参考文章
typecho更改文章路径后做301跳转以匹配百度收录的改版规则 - YLEEN的魔导书
1 条评论
网站办的不错的,加油