码迷,mamicode.com
首页 > Web开发 > 详细

httpd配置文件中重写函数Rewrite

时间:2016-02-22 16:01:21      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:

【RewriteCond%{HTTP_HOST}^(www\.)?xxx\.com$】

这是重写条件,前面%{HTTP_HOST}表示当前访问的网址,只是指前缀部分,格式是www.xxx.com不包括“http://”和“/”,^表示字符串开始,$表示字符串结尾,\.表示转义的.,如果不转义也行,推荐转义,防止有些服务器不支持,?表示前面括号www\.出现0次或1次,这句规则的意思就是如果访问的网址是xxx.com或者www.xxx.com就执行以下的语句,不符合就跳过。

配置域名跳转

<IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{HTTP_HOST} ^www.domain1.com$
        RewriteRule ^/(.*)$
http://www.domain2.com/$1 [R=301,L]
    </IfModule>
如果是多个域名,可以这样设置:
    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{HTTP_HOST} ^www.domain.com [OR]
        RewriteCond %{HTTP_HOST} ^www.domain1.com$
        RewriteRule ^/(.*)$
http://www.domain2.com/$1 [R=301,L]
    </IfModule>
或者:    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{HTTP_HOST} !^www.domain2.com$
        RewriteRule ^/(.*)$
http://www.domain2.com/$1 [R=301,L]
    </IfModule>

注意:^/(.*)$  其中 其中^表示正在表达式匹配,/ 是表示基目录,意思是从域名后开始匹配。而后面的$1==(.*)   $1用来表示前面基目录后面匹配的任意字符,有时不带上在重写的时候不带上这个/ 出错


前面%{HTTP_HOST}表示当前访问的网址,只是指前缀部分
%{REQUEST_URI}表示访问的相对地址,就是相对根目录的地址,就是域名/后面

example :

赛卡软件近期更换了域名,新域名为www.sicasoft.com, 更加简短好记。这时需要将原来的域名ss.kiya.cn, 以及论坛所在地址ss.kiya.cn/bbs/定向到新的域名,以便用户可以找到,并且使原来的论坛 URL 继续有效而不出现 404 未找到,比如原来的http://ss.kiya.cn/bbs/tread-60.html, 让它在新的域名下继续有效,点击后转发到http://bbs.sicasoft.com/tread-60.html,而其他网页,如原先的http://ss.kiya.cn/purchase不会到二级域名bbs.sicasoft.com/purchase上,而是到www.sicasoft.com/purchase
按照这样的要求重定向规则应该这样写:

    RewriteEngine On
    RewriteCond %{REQUEST_URI} ^/bbs/
    RewriteRule ^bbs/(.*)
http://bbs.sicasoft.com/$1 [R=permanent,L]
    RewriteCond %{REQUEST_URI} !^/bbs/
    RewriteRule ^(.*)
http://www.sicasoft.com/$1 [R=permanent,L]

httpd配置文件中重写函数Rewrite

标签:

原文地址:http://www.cnblogs.com/the-study-of-linux/p/5207156.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!