上一篇文章写到了我遇到的一些重定向问题,就是在重设固定链接之后,发现旧的链接都变成死链了,这样对自己的网站不好,对于搜索引擎的收录更加不好,特别是别人通过搜索进来时却显示个not found,特失败。在摸索两天之后,找到了两种解决办法,可供参考。
非插件:
第一种,这种问题肯定首先考虑代码而不是插件,由于本人用的web服务器是nginx,所以也只写nginx下的解决办法,至于apache,网上的办法应该是海量的,不存在找不到办法的问题。这两天看了很多nginx重定向写法的文章,发现很多人都是模仿别人的,所以对于规则写法的语法并没有什么研究,我上次也是试图模仿别人的写法,结果自己怎么写都不行,知道今天看了一篇技术文,参考了一下nginx的一些语法规则,才找到正确的规则。
nginx语法参考(感谢博主):nginx rewrite规则和参考 | haohtml’s blog
接下来用两个我自己的例子,一个是wordpress的,一个是typecho的,先写我自己之前的错误写法:
rewrite ^/\/$ /\.zz permanent;
更正之后的正确写法:
rewrite ^/(.*)/$ /\.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]+)/(.*)$ /\/\ 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收录和权重传递什么的应该影响也不大。下载地址就不给了,大家自己到后台搜索插件就行了。
记得在哪里看到说最好不用nginx玩WordPress~
我用的VPS,apache太吃内存,有点扛不住,而且nginx的性能比apache强很多,虽然功能没有apache这么多
学习,学习~~~~
写的不错了,期待更多的佳作