因为历史原因,我的文章分类和标签url分别设成了下面这样子
http://zhaoyanblog.com/archives/category/website
http://zhaoyanblog.com/archives/tag/angularjs
显然是不怎么简洁的,我现在要调整成
http://zhaoyanblog.com/category/website
http://zhaoyanblog.com/tag/angularjs
但是目前我的博客已经被百度收录了,这么一改的话,肯定会出现大批收录的url为死链,返回404。
百度站长平台提供了一个“网站改版”改版的功能。你可以提交要改版的目录
例如:http://zhaoyanblog.com/archives/tag
表示原来这些路径下面的url都改版了。
但是前提是,原来的url要使用301跳转指向对应的新url,百度会在一个月时间内更新索引。301跳转就是http的状态码,表示永久跳转。并告诉浏览器一个新的地址,浏览器自动完成页面跳转。
要实现301跳转,还要使用.htaccess文件,在里面加入下面的话:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^zhaoyanblog.com$
RewriteRule ^archives/category/(.*)$ category/$1 [R=301,L]
RewriteRule ^archives/tag/(.*)$ tag/$1 [R=301,L]
</IfModule>
注意,如果你有多个重写<IfModule mod_rewrite.c>,它们之间是有执行顺序的,其中一个是伪静态url,就是把archives/category/website 这样的路径,当做参数传递给index.php,伪静态url的目的就是利于SEO。这个我在《SEO我做了哪些优化》中有说过。
所以这个301跳转必须发生在,伪静态url那个<IfModule mod_rewrite.c>前面。
写好之后,这样就设定好了301跳转。
设定好了之后,我发现我的一些中文tag有点问题,例如
访问:http://zhaoyanblog.com/archives/tag/勇敢做自己。
返回301跳转到了
http://zhaoyanblog.com/tag/%D3%C2%B8%D2%D7%F6%D7%D4%BC%BA
还是返回404.
原因是我的网站使用的是utf-8编码,而我使用的apache服务使用了GBK编码
例如上方“%D3%C2%B8%D2%D7%F6%D7%D4%BC%BA”是“勇敢做自己”的GBK编码。
所以要修改apache的url编码格式为utf-8。这样中文跳转就没问题了:
http://zhaoyanblog.com/tag/%E5%8B%87%E6%95%A2%E5%81%9A%E8%87%AA%E5%B7%B1
我使用的西部数码的虚拟机提供了修改服务器url编码这样的选项,如果你直接自己搭建的apache或者nginx服务器,如果有上面的问题,可能需要自己修改相关的配置了。
除非注明,赵岩的博客文章均为原创,转载请以链接形式标明本文地址
本文地址:https://zhaoyanblog.com/archives/455.html