互联网 · 2012 年 5 月 21 日 4

nginx下Wordpress和Typecho修改固定链接后301重定向

    上一篇文章写到了我遇到的一些重定向问题,就是在重设固定链接之后,发现旧的链接都变成死链了,这样对自己的网站不好,对于搜索引擎的收录更加不好,特别是别人通过搜索进来时却显示个not found,特失败。在摸索两天之后,找到了两种解决办法,可供参考。

非插件:

    第一种,这种问题肯定首先考虑代码而不是插件,由于本人用的web服务器是nginx,所以也只写nginx下的解决办法,至于apache,网上的办法应该是海量的,不存在找不到办法的问题。这两天看了很多nginx重定向写法的文章,发现很多人都是模仿别人的,所以对于规则写法的语法并没有什么研究,我上次也是试图模仿别人的写法,结果自己怎么写都不行,知道今天看了一篇技术文,参考了一下nginx的一些语法规则,才找到正确的规则。

    nginx语法参考(感谢博主):nginx rewrite规则和参考 | haohtml’s blog

    接下来用两个我自己的例子,一个是wordpress的,一个是typecho的,先写我自己之前的错误写法:

rewrite ^/$1/$ /$1.zz permanent;

更正之后的正确写法:

rewrite ^/(.*)/$ /$1.zz permanent;

     这种办法的好处就是不用插件,对于网站的加载速度不会起什么影响,缺点就是,对于http://domain.com/postname/这样的固定链接,也就是/%postname%/型固定链接有硬伤,因为这样的重定向规则会把后台的/wp-admin/重定向到/wp-admin.zz,然后给你一个not found页面,所以你就别想进后台了。。

typecho的固定链接和重定向修改:

原固定链接形式:/category/year/month/day/slug.html

新的固定链接形式:/category/slug.html

nginx重定向代码:

rewrite ^/(.*)/([0-9]+)/([0-9]+)/([0-9]+)/(.*)$ /$1/$5 permanent;

     懂正则表达式的应该能看懂,像年月日这种纯数字的比较好匹配,如果你有以后修改固定链接形式的想法,建议建站的时候固定链接选择的样式:

不建议形式:WP平台:/%postname%/ 和Typecho平台:/[slug]/

建议形式:

Wordpress平台:/category/postname/或者/category/post_id/或者/catgory/postname(post_id).html (html 随意更改都行,只要不是文件格式,如zip等)

Typecho平台:/catgory/slug/或者/catgory/cid/或者/catgory/slug(cid).html (html 随意更改都行,只要不是文件格式,如zip等)

插件:Change Permalink Helper

    看见很多人推荐一款叫Deans permalinks redirect的插件,说非常强大,我找了半天,在官方的插件库里面没有找到,所以我自己找了几个插件试验了一下,最后用了一个名叫Change Permalink Helper的插件,很小巧,无需设置,它能够自动识别,并且返回一个301重定向的信息,将以前的旧链接地址引导到新的地址,由于是301重定向,对于SEO收录和权重传递什么的应该影响也不大。下载地址就不给了,大家自己到后台搜索插件就行了。

4
0
希望看到您的想法,请您发表评论x