19/05/2009
htaccess设置中Redirect permanent和RedirectMatch的区别
简单来说吧他们最大的区别就是一个允许使用正则一个不允许使用,其它的他们完全相同都是用来设置网址跳转的。
Redirect permanent 不允许使用正则
RedirectMatch 可以使用正则
举一个真实的例子,我因为网站数据结构的修改以及以前目录设置的问题,网站d1999特别容易出现重新生成的文件名和以前的文件名不相同的情况,而问题就出现在生成网页名的时候使用了日期,而因为时区的设置问题,日期有时候会不同,所以造成生成的页面也不同,当然现在已经知道问题在那里了,采用了新的日期生成方式,可以当时是不知道的,已经生成的页面如何处理呢?就可以用.htaccess对页面进行301跳转。
例子:
要把
http://www.d1999.com/BTxiazai/200805/07-7028.html
去掉最后个/后边到-的内容 变成
http://www.d1999.com/BTxiazai/200805/7028.html
怎么处理呢?最好的办法用正则对访问页面进行匹配,然后重新转到正确的网址,正则的写法如下。
^/([^/]+)/([^/]+)/(?:.*-)(.*) http://www.d1999.com/$1/$2/$3
在网上搜索如何进行网址跳转的设置都给出Redirect permanent于是写出如下代码
Redirect permanent ^/([^/]+)/([^/]+)/(?:.*-)(.*) http://www.d1999.com/$1/$2/$3
结果无效,找服务器提供商解决业务人员不精此道无法解决,于是上网搜索。
终于在一个老外的文章里找到答案要使用RedirectMatch,写成
RedirectMatch ^/([^/]+)/([^/]+)/(?:.*-)(.*) http://www.d1999.com/$1/$2/$3
的格式才行,于是马上实践果然成功。
最后说一下301定向对于搜索引擎优化是很有帮助的,特别是在大量重复文章的情况下,用这个方法可以避免网页被认为是垃圾站而降权。
之前我就是不知道这个规则d1999被降权的很严重,不过有个网站进行SEO的研究也是很值得又学到了新的东东,如果你也学到了,别忘了回复哦。
最后提供一些学习资料: