求助正则表达式,请进。
我有一站用虚拟主机htaccess进行rewirte, 代码如下:
Options
RewriteEngine on
RewriteRule ^([a-z]+).html$ /$1.php
RewriteRule ^([0-9]+),([a-z]+).html$ /$2.php?id=$1
RewriteRule ^([0-9]+)-1.html$ /productdetail.php?chanpinid=$1
RewriteRule ^([0-9]+)-2.html$ /news.php?newsid=$1
RewriteRule ^([a-z]+)([0-9]+).html$ /$1.php?page=$2
RewriteRule ^([0-9]+),([0-9]+),([0-9]+).html$ /moreproduct.php?classid=$1&boardid=$2&page=$3
RewriteRule ^([0-9]+),([0-9]+).html$ /productmore.php?productid=$1&page=$2
以上规则我的目的作用域是网站的根目录。
按以上规则URL重写后,IE中输入http://www.###.com/118-1.html, URL实际返回http://www.###.com/productdetail.php?chanpinid=118
现在的问题是:网站根目录下有一文件夹abc, 当我在IE中输入http://www.###.com/abc/118-1.html REWRITE规则同样奏效,URL实际返回也是http://www.###.com /productdetail.php?chanpinid=118
由于这个规则的缺陷,http://www.###.com/118-1.html和http://www.###.com/abc/118-1.html 其实指向同一个URL, 但GOOGLE现在重复收录我网站的内容,导致大量的网页复制。
如果我屏蔽http://www.###.com/abc/118-1.html 指向 http://www.###.com/productdetail.php?chanpinid=118,
我在正则表达式规则中要做何修改?
用RewriteCond限制重写的条件。
---------------------------------------------------------------------------------
网站改版后的URL地址跳转
No Comments | 578 views绝大多数网站改版后都会面对一个令人很苦恼的问题,就是怎么让原来的地址可以正常访问,且和新改版后的网站能有机的结合在一起。
对于这个问题,比较好的解决办法是通过.htaccess文件的重定向来解决,而很多人不知道怎么来写.htaccess文件,尤其是里面的正则表达式,这里我仅简单说一下怎样通过.htaccess来实现旧地址到新地址的跳转,其他更深入的知识,以及正则表达式的知识,我会在以后的博文中讲解。
通过.htaccess调整我这里有两种方法:第一种是通过redirect来实现,代码是
Redirect 原地址 新地址
例如我在rssdiy上面的写法是
Redirect /show-1.html http://www.rssdiy.net/channel/1/
这和域名里面的url调整是一个效果的。第二种是通过RewriteRule来实现的,代码是
RewriteRule 原url规则 新url规则
注意这里是规则,可以用正则表达式。例如上面的地址也可以这样写
RewriteRule ^show-([0-9]+)\.html$ channel/$1/ [R]
--------------------------------------------------------------------------------
采用正则表达式规范文件名
在过去的两年中,本Blog的文件名一直很随意,有些包含下划线,有些包含连字符。
这次趁系统升级的机会,把所有的url都统一为以连字符号(-)来构成,url的文件名中不再包含下划线了。
那么原先那些包含下划线的网址,已经被搜索引擎收录了,而且也有Google PR值了,总不能白白放弃。这时想到了网址重定向。
于是,在.htaccess中添加了数条规则,把网址以301重定向到相对应的新网址。
也就是把
http://seo.g2soft.net/2008/02/25/google_adsense_tos_update.html
永久重定向到
http://seo.g2soft.net/2008/02/25/google-adsense-tos-update.html
因为原先网址的随意性,所以需要用到正则表达式和Rewrite规则来做到我的要求。这里就不做展开,只举一个例子好了。
RewriteRule ^([^_]*)_(.*)\.html$ http://seo.g2soft.net/$1-$2.html [R=301,L]
关于下划线还是连字符号好,在搜索引擎优化领域有过争执,通常认为连字符号为好。可是在Google的搜索结果中,第一页也常常看到包含下划线的网址。所以我认为,这两者之间的差距已经很小,对于搜索排名的影响也很小了。
--------------------------------------------------------------------------------
说道URL的写法有很多,有用数字的,有用很多参数的,都有。
而促使DavidYin在八月份把网址通过URL rewrite来规范为连字符号连接英文单词的方式是因为Google明确说明对于Google友好的网址就是这种格式。
这里我把认为重要的有关网址格式的要点说明如下:
1)使用有含义的单词,而不是数字来编写url。
2)在网址中使用标点比不用标点好,比如green-tea.html就比greentea.html好。
3)使用连字符号就是-来连接单词,而要尽量避免使用下划线。
这就是我对于网址格式的最好建议,也就是本站目前在使用的格式。因为本站是Blog,是以日期为线索的,所以日期也成为网址的一部分。对于其它类型的网站,则不必考虑日期。
--------------------------------------------------------------------------------
No comments:
Post a Comment