SEO
Apache URL Rewrite 之页面重定向一例(动态地址->静态地址)
网友“紫衣独影天涯陌”在百度PHP贴吧问了这样一个问题:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
我希望将URL
http://www.song.com/myaceona/careerinfo/check.do?corpID=3024&jobID=21691
采用301重定向到
http://www.song.com/job/3024/21691.html
此页面URL
我采用如下重定向语句
RewriteEngine on
RewriteCond %{QUERY_STRING} ^corpID=([0-9]*)&jobID=([0-9]*)$
RewriteRule ^myaceona/careerinfo/check\.do /job/%1/%2.html [R=301,L]
采用此语句后测试,得到的效果是
http://www.song.com/myaceona/careerinfo/check.do?corpID=3024&jobID=21691
重定向到了
http://www.song.com/job/3024/21691.html?corpID=3024&jobID=21691
可见该重定向语句是不正确的,可是我找了很久没找到错误所在,请问有没有高手指点一下正确的表达式呢? |
网友“diipo”给了这样的回答:
|
1 2 3 |
RewriteEngine on
RewriteCond %{QUERY_STRING} ^corpID=([0-9]*)
RewriteRule ^myaceona/careerinfo/check\.do /job/%1/%2.html [R=301,L] |
经过楼主“紫衣独影天涯陌”的测试,“diipo”的方法更加糟糕,地址被重写为:
|
1 |
http://www.song.com/job/3024/.html?corpID=3024&jobID=21691 |
这样显然是不对的。jobId的参数在url path中丢失了。 其实楼主的疑问归根结底,在于,如何去掉原始地址中的查询语句(query string) 。 经过测试,“紫衣独影天涯陌”的写法的确会跟上原始的Query String,虽然说在功能上没多少影响,但是毕竟URL Rewrite后的地址不够美观。 想起来前段时间,我的一个网站更换域名,需要将 http://www.cnginx.com/sample/?t123.html 重写为形如 http://www.pydn.cn/forum.php?mod=viewthread&tid=123 这样的地址,也有类似的问题(其实是 PHPWIND 程序更改为Discuz! X)。其实只要在 RewriteRule 规则 Substitution 的最后,加上一个问号(?)即可,相当于添加了一个空的Query String,这样也就告诉 Apache 的 mod_rewrite 模块,将使用新的 Query String,而不是继续使用原来的 Query String. 而 mod_rewrite 模块将会对于空的 Query String 进行忽略处理,刚好可以完美解决这个问题。 其实他的写法距离正确答案仅仅一步之遥啊。 于是,我写了一个重写规则:
|
1 2 3 4 5 |
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^corpID=([0-9]*)&jobID=([0-9]*)$ [NC]
RewriteRule ^myaceona/careerinfo/check\.do /job/%1/%2.html? [L,R=301] |
经过测试,可以完美实现楼主的需求。 原帖地址:http://tieba.baidu.com/f?kz=1094397960
SEO之关键词的选择原则
选择恰当的关键词是SEO最具技巧性的环节之一。那么,应该如何选择关键词呢? 1. 要保证网站与关键词的内容相关性。 2. 要选择搜索次数多,但是搜索结果少的关键词。这样的关键词流量大,竞争小。 3. 主关键词不能太宽泛。主关键词宽泛,竞争激烈,代价高,搜索意图也不明确,因此商业转化率也比较低。 4. 主关键词不能太特殊。 5. 应该考虑关键词的商业价值。