一开始建站的时候,对于wordpress的固定链接随意设置,等到明白过来的时候,发现已经更新了很多文章了。如果这时候再修改固定链接的话,搜索引擎已经收录了不少文章,那些链接就成了死链,影响网站收录和印象。这时候就要做一下网站链接的301重定向了。
301重定向(301 redirect)是指网址的永久性转移(Permanently Moved),当网站在搜索引擎索引库中的网址发生改变时,搜索引擎并不能及时改变索引库中的网址。网站管理员通过对网址的301重定向转移,可以避免损失来自搜索引擎的用户。更重要的是,通过301重定向转换,URL的权重、Google PR值都能够不受影响地传递。因此301重定向也是网页更改地址后对搜索引擎非常友好的一种方法。
要实现网站的301重定向,有很多方法,新手推荐使用redirection插件,简单友好,自带中文设置界面。不过这里介绍的是通过修改.htaccess文件进行301重定向,从而实现WordPress固定链接形式的更改。
1、什么是.htaccess
根据维基百科,htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
2、.htaccess中用到的正则表达式
和通配符类似,正则表达式也是用来进行文本匹配的工具,只不过比起通配符,它能更精确地描述你的需求。
^ –> 匹配字符串的开始
$ –> 匹配字符串的结束
^$ –> 可以用于确定字符串,即可以用于确定起点或终点。例如:^$ —— 空字符串
\s –> 匹配任意的空白符
\w –> 匹配字母或数字或下划线或汉字
\b –> 是正则表达式规定的一个特殊代码代表着单词的开头或结尾,也就是单词的分界处
\d –> 匹配一位数字
\W (大写) –> 匹配任意不是字母,数字,下划线,汉字的字符
\S (大写) –> 匹配任意不是空白符的字符
\D (大写) –> 匹配任意非数字的字符
\B (大写) –> 匹配不是单词开头或结束的位置
“ . ” –> 匹配除了换行符以外的任意字符
“ * ” –> 它代表的不是字符,也不是位置,而是数量——它指定 * 前边的内容可以连续重复使用任意次以使整个表达式得到匹配。“ * ”连在一起就意味着任意数量的不包含换行的字符
“ + ” –> 是和“ * ”类似的元字符,不同的是 * 匹配重复任意次(可能是0次),而 + 则匹配重复1次或更多次。
“ ? ” –> 重复零次或一次
“ – ” –> 不是元字符,只匹配它本身,即连字符(减号)
参照更多:《.htaccess技巧: URL重写(Rewrite)与重定向(Redirect)》
3、举例说明
这里举我自己的例子,一开始我的链接是/archives/%post_id%.html,我想简化成/%post_id%.html,也就是说,需要将中间的/archives去掉。
RedirectMatch 301 ^/archives/(.+)$ /$1
说明:^可以理解为语句正式开始,/archives是原来的链接,(.+)表示重复一次或者多次的任意字符,$可以理解为老链接和新链接之间的分割符。再空一格,表示新链接的开始。$1表示/archives之后的全部变量原封不动继承。
4、注意事项
wordpress会自动修改.htaccess文件中# BEGIN WordPress和# END WordPress之间的内容,即使你并没有修改过固定连接。只要点击了“固定连接”,.htaccess文件中# BEGIN WordPress和# END WordPress之间的内容就会被更改,自动还原。
因此,如果你要添加自己的语句而不被替换的话,将自定义的匹配规则写在.htaccess中的# BEGIN WordPress和# END WordPress之外即可。
参考链接:
http://www.mrbie.com/wordpress-htaccess-301-redirection.html
http://www.caier.org/301-redirect.html
转载请注明:秋水逸冰 » wordpress修改固定链接后301重定向