或者

浅谈301重定向中规则的语法

作者:长瘦不老i 浏览:149 发布时间:2018-03-19
分享 评论 0

  301重点向一直是很多seoer都接触过的,我相信很多站在在做301的时候只是去网上找下相关规则,然后改下,可以说很多人并不知道规则的意思,今天本人以“Apache服务器”和“IIS服务器”为例就给大家分享下,如有不对,还请原谅。


  如果网站服务器是Apache,在.htaccess文件开始处加入一下规则(如果没权限修改, 请联系服务提供商协助修改):


  RewriteCond %{http_host} ^domain.com [NC]


  RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]


  {HTTP_HOST}是服务器变量


  ^是匹配输入字符串的开始位置。


  $是匹配输入字符串的结束位置。


  R=301就是执行永久重定向,由于R还有302的意思,所以这这里强调下R=301,


  L是规则结束的意思


  一个最常用的正则就是(.*)。它含有两个元素:一是“点”,表示任意字符;二是“星”,表示以前的全部字符。所以(.*)会匹配{REQUEST_URI}的所有字符。{REQUEST_URI}是URL中出去域名以及“?”符号的所有查询字符,也是Apache 重写技术尝试匹配的字符。


  [NC]告诉Apache服务器忽略正则中的大小写,它经常被用到{HTTP_HOST}服务器参数上,因为域名里面是不会区分大小写的;


  如果网站服务器是IIS,要使用ISAPI_Rewrite组件,在httpd.ini文件开始处加入以下规则:


  RewriteCond Host: ^domain\.com$


  RewriteRule (.*) http\://www\.domain\.com$1 [R,I]


  ^是匹配输入字符串的开始位置。


  $是匹配输入字符串的结束位置。


  (.*)会匹配{REQUEST_URI}的所有字符。


  I是不管大小写强行指定字符匹配,这个FLAG影响RewriteRule指令和相应的RewriteCond 指令。


  R是强制服务器对客户端发出重定向指示即时应答,提供目的URl的新地址,重定向规则经常是最后规则。


  \将下一个字符标记为一个特殊字符、或一个原义字符、或一个 后向引用、或一个八进制转义符。