apache 的域名重定向

回复 收藏
需求:要把访问域名 www.domain1.com 的域名转发到 www.domain2.com
实现:
在相关的虚拟主机中增加
  1.    
  2.         RewriteEngine on
  3.         RewriteCond %{HTTP_HOST} ^www.domain1.com$
  4.         RewriteRule ^(.*)$ http://www.domain2.com/$1 [R=301,L]
  5.    
如果是多个域名重定向到一个域名
  1.    
  2.         RewriteEngine on
  3.         RewriteCond %{HTTP_HOST} ^www.domain.com [OR]
  4.         RewriteCond %{HTTP_HOST} ^www.domain1.com$
  5.         RewriteRule ^(.*)$ http://www.domain2.com/$1 [R=301,L]
  6.    
2011-05-05 10:53 举报
已邀请:
0

丁张龙

赞同来自:

kanguo
0

xiaotuanyu120

赞同来自:

预习
0

jade

赞同来自:

准备资料中。。昨天才看了。。老师的课程最后一个视频。。还是需要大量准备下。。。
0

neolc

赞同来自:

我按照自己的想法把代码改了,试验了一下,发现重定向不了。又严格按照铭哥的代码改了回来才重定向成功。分享一下经过。首先完全正确的重定向代码如下

  1. <IfModule mod_rewrite.c>
  2.       RewriteEngine on
  3.       RewriteCond %{HTTP_HOST} ^www.domain1.com$
  4.       RewriteRule ^/(.*)$ http://www.domain2.com/$1 [R=301,L]
  5. </IfModule>
我第一次写的时候误以为上方代码和下面的代码等效,就写成了下面的代码。
  1. <IfModule mod_rewrite.c>
  2.       RewriteEngine on
  3.       RewriteCond %{HTTP_HOST} ^www.domain1.com/$
  4.       RewriteRule ^(.*)$ http://www.domain2.com/$1 [R=301,L]
  5. </IfModule>
结果两个只会正常访问同一个页面,不会发生域名重定向。找了好长时间原因最终发现是代码中的字符 “/”位置不对。究其原因我觉得是%{HTTP_HOST}只会匹配一个正确完整的域名,而字符 “/” 不属于域名的一部分。
写下帖子引以为戒,若有不当的地方恳请各位高手指正。
0

fh_panda

赞同来自:

收藏
0

Hyman1105

赞同来自:

neolc 发表于 2015-1-31 17:02
我按照自己的想法把代码改了,试验了一下,发现重定向不了。又严格按照铭哥的代码改了回来才重定向成功。分 ...

谢谢分享!!!学习了!!!
0

wangxinpeng

赞同来自:

这些代码参数是怎么来的?
0

杭州小白

赞同来自:

阿铭老师,配置里的$和$1,还有^(.*)$等是自己想的正则  还是规定就是这样写的啊
0

wanmei

赞同来自:

了解

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: