wordpress 新旧链接301跳转,傻瓜教程

喜欢折腾的人就是没办法,wordpress 固定链接改来改去的有木有,最大的弊端就是让搜索引擎访问经常找不到北,不利于提高百度,谷歌权重,那什么样的固定链接是好的呢?以前我用/年/月/post_id.html 来做固定链接,发现对搜索引擎非常不利,然后直接改成/archives/post_id/,权重一下子就上去了。
但旧的固定链接怎么办,不可能牺牲那几万条搜索引擎来的流量吧,当然不会,象我这样的情况其实只有加下面的一句代码到网站根目录下的.htaccess文件中即可。是不是很简单。
RedirectMatch 301 ^/[0-9]{4}/[0-9]{1,2}/([0-9]+).html /archives/$1/

如果是别的情况,请仔细阅读以下文字:

WordPress的固定链接有哪些形式?
默认:https://shusite.com/?p=123
日期和名称:https://shusite.com/%year%/%monthnum%/%day%/%postname%/
月份和名称:https://shusite.com/%year%/%monthnum%/%postname%/
数字型:https://shusite.com/archives/%post_id%
文章名:https://shusite.com/%postname%/
自定义:https://shusite.com/%year%/%monthnum%/%post_id%.html (这是我的自定义形式,你也可以用别的自定义形式)
正则表达式中的一些符号解释:
(.+) 对应的是任意字符(包括汉字、英文字母等)
(\d+)对应的是任意数字(仅仅是阿拉伯数字)
$1 $2 $3 是前面出现过的变量的再次引用
几个简单的重定向示例:
更改https://shusite.com/%year%/%monthnum%/%day%/%postname%/
为https://shusite.com/archives/%post_id%/ (这个就是我目前的修改)
重定向语句:RedirectMatch 301 ^/([0-9]+)/([0-9]+)/([0-9]+)/(.*)/$ /archives/$4/
语句解释:RedirectMatch 301 ^可以理解为语句正式开始,中间三个([0-9]+)可以理解为分别对应%year%/%monthnum%/%day%,(.*)可以理解为最后的文章名称或者ID,这四个变量分别可以赋予编号$1,$2,$3,$4。(.*)和$4.html之间的那个$可以理解为老网址和新网址之间的分割。
我们要修改的,就是把地址中的日期全都不要了,只要第四部分的文章名,然后在文章名后面加上.html来实现伪静态(linux主机中,可以直接在wordpress后台固定链接中添加.html)
也就是说,那三个([0-9]+)都不要了,只要(.*)部分,而(.*)对应于$4,所以现在的网址只写上$4.html就行了,也就是以前的(.*).html
/%post_id%修改为/%category%/%post_id%.html
因为%post_id%肯定是数字,而上面说过,正则表达式中(\d+)对应任意数字,所以以前的网址可以写成/(\d+)
而%category%是分类,肯定是字符,不管是汉子还是字母,正则表达式中(.+) 对应的是任意字符(包括汉字、英文字母等),所以新的网址可以写成/(.+)/(\d+).html
在原网址中,%post_id%即(\d+)对应于$1,所以新网址为/(.+)/$1.html
然后用$将新旧网址连接起来,写成301重定向语句,即为:
RedirectMatch 301 ^/(\d+)$ /(.+)/$1.html
我该如何写自己的重定向语句呢?
首先:你要弄清楚自己的原网址每一部分是什么形式,数字?字符?然后分别用上面的正则表达式符号来对应,(.+) 对应的是任意字符(包括汉字、英文字母等),(\d+)对应的是任意数字(仅仅是阿拉伯数字)
因为文章名称中可能含有字母,可能含有数字,所以要用(.*)来对应,(.*)表示任意的东西
然后:将原网址每一部分分别对应,按照顺序,依次用$1/$2/$3/$4/$5来对应
再然后:写出新网址,按照写原网址的规则来写,不再累赘
最后:用$来连接新旧网址,写成301重定向语句(新网址中与原网址相同的部分要用符号来代替,用$1、$2、·····来代替)
注意,$和后面的新网址之间有一个空格。而且,如果原网址最后有/的话,在$之前也必须有一个/

网友评论2

  1. 0楼
    jj:

    我太蠢了,大佬教教吧
    https://www.a.com/archives/610
    301跳转为
    https://www.a.com/archives/610.html
    怎么实现呢,把.htaccess下载修改上传成功还是没效果
    RedirectMatch 301 ^/([0-9]+)/(\d+)/$ /$2.html
    是不是错了.。。。。。。

    2021-01-07 17:12 [回复]
  2. 0楼
    jj:

    搞定了,在宝塔伪静态里面设置了就好了

    2021-01-07 17:25 [回复]

发表评论

表情
还能输入210个字