SEO——友好的URL和重定向应用

之前的提到搜索引擎的索引排名的基础就是链接,而实际站点中链接都是指向的URL地址的,URL是明显影响单击率的因素。URL是一个页面的所有内容的地址,除了要对用户友好外(URL地址命名),最关键的就是对搜索引擎友好,因为这是每个页面索引的基础。

一、URL地址插入关键词的好处

1、对搜素引擎排名有好处,在正式的排名中URL地址起到的作用估计占到20%,主要是为了增加单击和一目了然的关联性。

2、鼠标经过链接文字时,URL会出现在浏览器状态栏,可以吸引单击。

3、基于关键词的URL比查询字符串更加容易记忆。

二、静态URL和动态URL

1、静态URL

定义为不包括查询字符串的URL地址。这样指向无参数的php脚本的URL也是静态的。即时是由php脚本生成的静态URL,对搜索引擎也不会有任何问题。

2、动态URL

包括一个用“?”开始的查询字符串,用于传递参数的URL。对于不同的查询字符串会有不同的输出内容,搜索引擎会当成是不同的页面,但其实是同一个php脚本生成的。但是脚本可能对不同的查询字符串输出同样的内容,这就可能导致重复内容的出现。同时,搜索引擎可能会尝试去掉多余参数,这样建立的索引可能有大量重复内容。

三、URL重写

基于Apache服务器的rewrite_module模块进行的的URL重写是非常的强大的一个功能,提供了一个基于正则表达式分析器的重写引擎来实时重写URL请求。

1、启用mod_rewrite

需要在Apache的服务器配置文件http.conf中打开

LoadModule  rewrite_module modules/mod_rewrite.so

2、重写URL

分为服务器级(http.conf)和目录级(.htaccess)配置方式,两种配置的书写方式都相同。一般情况下优先使用前者,除非没有对主配置文件的访问权限。使用AllowOverride启用了.htaccess文件后,Apache每次都在所有目录中查找.htaccess文件,无论是否真的存在或用到,将会导致性能下降。另外,Apache必须在所有上级目录中查找.htaccess文件,从而使所有的指令都生效。同时,启用.htaccess修改权限后,会更改服务器的配置,从而可能带来意想不到的修改。

  • RewriteBase:设置目录级重写的基准URL,作用域是directory、.htaccess。可以用于目录级的配置文件中并在局部范围起作用。只是剥离了本地路径前缀的一部分。如果网站服务器URL不与物理文件路径直接对应就要指定这个选项。重写后不用再重写根目录,将URL地址前的斜杠去掉了。
  • RewriteCond:定义重写发生的条件,作用域是全部配置范围有效。在一个RewriteRule生效之前可以有一个或多个RewriteCond指令,仅当满足条件后才会进行后续的匹配。teststring是一个文本字符串,反向引用方法是 “ %N”(1<= N <=9),引用当前符合条件的分组成分。
格式:RewriteCond   teststring   CondPattern [flag]
teststring首先被计算,然后与CondPattern比较以获得结果。可以在测试前使用感叹号作为前缀“!”,可以实现条件的反转。可以使用的条件测试有:
teststring>CondPattern   teststring<CondPattern   teststring=CondPattern  (使用字典顺序比较,二者都看做纯字符串)
-d  (目录):将teststring看做一个路径名测试是否存在这个目录
-f  (文件):将teststring看做一个常规文件测试是否存在
-s  (非空的常规文件):将teststring看做一个文件名测试是否存在且大小大于0
-l  (符号连接):将teststring看做一个是否是存在的一个符号连接文件
-x  (可执行):将teststring看做一个路径名测试是否存在这个目录
-F  (对子请求存在的文件):测试是否为一个有效的文件,在服务器当前访问控制配置下范围。用一个内部子请求来检测,会降低服务器性能慎用。
-U  (对子请求存在的URL):检查是否为一个有效的URL,在服务器当前访问控制配置下范围。用一个内部子请求来检测,会降低服务器性能慎用。
追加标记:
‘nocase|NC’:忽略大小写               ‘ornext|OR’: 或下一条件
  • RewriteEngine:打开或关闭运行时的重写引擎。作用域为全局。设置为on或off。
  • RewriteLog:设置重写引擎的日志文件名,作用域为服务器和虚拟主机配置。在每个服务器级别的配置中仅出现一次。要关闭重写操作的记录应该使用“RewriteLogLevel 0”,而不应该设置文件名为空。
  • RewriteLogLevel:设置重写引擎的日志详细程度,作用域为服务器和虚拟主机。默认为0,表示不记录重写引擎日志。较高的level会是服务器速度急剧下降。大于2的level只能用于调试目的。
  • RewriteRule:定义重写规则。作用域为全局。
格式:RewriteRule pattern  substitution []flag]
反向引用使用 “$N”(0<=N <=9),对RewriteCond最后匹配的反向引用使用“%N”,对服务器变量的引用使用“%{var}”,对RewriteMap中定义的函数的引用“${mapname:key|default}”。
重写规则按定义顺序依次替换,知道所有规则处理完毕,除非使用L标记终结。
追加标记:
‘chain | C’:链接下一个规则。如果一个规则匹配则继续处理后续规则,如果不匹配,其后继规则将跳过不执行。
‘cookie | CO=NAME:VAL:domain[:lifetime[:path]]’:用于在客户端设置一个cookie。
‘env | E=VAR:VAL’:将环境变量VAR设置为VAL。
‘forbidden | F’:强制禁止当前URL,立即返回一个403的HTTP状态码。
‘gone | G’:强制废弃当前URL,返回一个410的HTTP状态码。
‘handler | H=content-handler’:强制定义目标文件的内容处理器为content-handler。
‘last | L’:立即停止重写操作。
‘next |N’:重新执行重新操作,类似continue,此时再次处理的URL已经不是原始的URL了,而是上一次最后一条规则重写后的URL。要避免死循环。
‘nocase | NC’:pattern中忽略大小写。
‘noescape | NE’:输出中不对URI进行转义
‘nosubreq | NS’:不对内部子请求进行处理
‘proxy | P’:强制为代理请求发送,并立即中断重写处理。
‘passthrough | PT’:移交给下一个处理器。
‘qsappend | QSA’:强制在已有的替换字符串中追加一个查询字符串,而不是简单的替换,需要通过重写规则在请求串中增加信息时使用。
‘redirect | R[=code]’:强制执行一个外部重定向,没有指定code,就产生一个302临时性移动的HTTP响应码。
‘skip | S=num’:强制跳过当前规则之后的num个规则继续执行,可以模拟if-then-else结构。
‘type | T=MIME-TYPE’:强制目标文件的MIME类型为MIME-TYPE。
  • RewirteLock:设置RewriteMap同步使用的锁文件名,作用域为服务器配置。
  • RewriteMap:定义用于关键字查找的映射函数,在服务器和虚拟主机中配置。
在实际重写的过程中,主要的问题就是RewriteRule的书写了,特别使用的是正则表达式进行,其中对于URL中的不同变量的的分隔符问题需要注意,空格一定要换成分隔符,破折号比下划线作为分隔符更好,因为下划线将多个部分连接起来后算作了同一个字符,不利于URL语义,而破折号则是搜索引擎的分隔符分割语句。

四、重定向

前面说过搜索引擎对同样的重复页面会进行惩罚,不利于搜索引擎,同时对于更换链接的页面也需要使用重定向技术,避免损失之前积累的链接价值。

1、301和302重定向

300:多个选择    301:永久转移   302:临时移动   303:见其他   304:未修改    305:使用代理    307:临时重定向
重定向的串联次数一般不能超过3次,实际应用中只有301和302被用于重定向。
RewriteRule ^foo\.php$ /bar.php [R=301,L]
这条规则将foo.php重定向到bar.php,对于php脚本来说,可以不是用重写规则实现,直接使用header函数,返回一个含有Location的头,当没有明确提供状态码时默认为302临时重定向。

2、多个域名的重定向

当有多个域名过期或重新配置后,需要将来自原来的域名的请求都重定向到新的域名,那么可以这样配置:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.example\.com
RewriteRule  ^(.*)$  http://www.example.com/$1 [R=301,L]

URL的友好是对搜索引擎进行索引排名的一大关键因素,利用好各种重写规则构造好的URL,是非常的重要的一步。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值