现在的位置: 首页 > 综合 > 正文

magento SEO — 删除掉magento URL中的session id字符串

2013年10月03日 ⁄ 综合 ⁄ 共 1870字 ⁄ 字号 评论关闭

我想大家可能都有碰到这种情况,就是在访问magento
网站的时候,有的时候后面会带一个session id字符串,有时候却没有。如:

 

http://www.xyzabc.com/?SID=54b1888e1c2e3281945bf05210f6d0fa

 

那么什么时候会再现SID,什么时候没有呢?我们知道访问一个域名通常可以使用下列两种形式:

 

www.xyzabc.com

xyzabc.com

 

只要你的DNS设定指向了同一个IP,并且apache做了相应的配置。问题就在于此。当你的magento
设置(System> Configuration> Web > Un secure)
的base URL是http://www.xyzabc.com时,而你使用http://xyzabc.com访问时,那么打开的页面中有的链接就会带SID字符串,而且是那么分使用相对路径的URL生成的URL中会有。反之也是,如果magento
后台中设置的base url是xyzabc.com时,在使用www.xyzabc.com访问时,同样也会带sid字符串。

 

那带SID的URL会带来什么问题?

第一,可能会导致某些magento
页面无法访问,

尤其是那些在代码中是通过相对路径来指定生成的URL。比如,本来应该是生成

http://www.xyzabc.com/contacts/

现在却是

http://www.xyzabc.com/?SID=54b1888e1c2e3281945bf05210f6d0facontacts/

 

显然是会进入404页面的。

 

第二,对SEO不利。我们总不想搜索引擎收录的页面中使用的URL是带链接的吧!

http://www.xyzabc.com/contacts/?SID=f3b20768c9dc0df4a0889e89cda61cb3

http://www.xyzabc.com/contacts/?SID=3760d086e64b0d6f3821362cb9efa4ef

http://www.xyzabc.com/contacts/?SID=0bf7387b53f8d75bd9038c652b90d107

显然这样会使用不同的URL(对搜索引擎来说)收录同一个页面,这样对PageRank是及其不利的。因为搜索引擎讨厌duplicate content,因为这样对别人查询资料是不利的。这样岂不是冤枉,你明明没有重复的内容!

 

解决方案:
是通过apache的重写模块(mod_rewrite)将对会造成URL后面带SID的那个域名的所有请求重定向到不会造成带SID URL的那个域名上去。(可以直接将下列的命令添加到.htaccess文件中,当然如果为了好一点的性能,建议直接放到对应虚拟主机的定义中,要使用 directory容器包含)

RewriteEngine on //打开重写引擎,magento的.htaccess中已经是打开的了

如果你后台使用的是没有带www的域名做magento的base url,那么我们需要将所有对带www的域名的请求重定向到这个没带www的短域名上,即magento的base url.

相反,则应用:

 

简单分析一下上面使用的的mod_rewrite模块的相关指令:

RewriteCond指令用来定义重定向(或重写URL)的条件,

基本语法格式是

RewriteCond TestString
CondPattern,其中

%{HTTP_HOST}指代所有请求URL中的主机名,即www.xyzabc.com或xyzabc.com。



^yourdomain/.com$


正规表达式匹配yourdomain.com,前面以!开头表示所有主机名不是yourdomain.com的就改写成yourdomain。同样的!www/.yourdomain/.com条件是指所有主机名不是www.yourdomain.com的就改写成www.yourdomain.com.


(转载请注明来源,http://blog.csdn.net/xinhaozheng
)

抱歉!评论已关闭.