首页 » 网络文摘 » 浏览内容

apache配置多域名rewrite重定向或伪链

954 1 发表评论

关于apache配置多域名,一般为两种方法。

1.虚拟主机及利用mod_rewrite对URL进行重定向或伪链~

2.虚拟主机配置方法,在httpd.conf文件最后简单添加,例如:<VirtualHost www.exehack.net>

这样在访问相关域名的时候便会跳转到对应的目录

虚拟主机的最大缺点是性能消耗较大,并且似乎和APACHE用来托管静态文件、连接及负载均衡后台所用的mod_jk有冲突。

所以个人不建议使用虚拟主机的方法去管理域名。

利用mod_rewrite对域名进行重定向或伪链:
首先需要开启mod_rewrite支持,在httpd.conf文件里搜索:

去掉#号,开启mod_rewrite。

继续搜索AllowOverride None更改为AllowOverride All,打开.htaccess的支持。

注意AllowOverride是可以针对每个目录进行设置的,这里应该将apache DocumentRoot根路径设置为AllowOverride All:

之后建立.htaccess文件放在DocumentRoot下,通过编写.htaccess来管理相关域名

对域名进行301重定向,.htaccess中设置:

则访问www.test.net.cn或test.net.cn开头的域名会跳转到http://www.test.com/test.html

www.exehack.net或exehack.net开头的域名会跳转到https://www.exehack.net/test1.html

注意一些符号及参数:

^www.test.net.c表示以www.test.net.cn为开头,和所有语言一样,!代表否,即!^www.test.net.cn表示不以www.test.net.cn开头。

对mod_rewrite来说,!是个合法的模板前缀,表示“非”的意思,

这对描述“不满足某种匹配条件”的情况非常方便,或用作最后一条默认规则。

当使用!时,不能在模板中有分组的通配符,也不能做后向引用。

R 强制外部重定向,后面可以代301或302跳转。

L 表明当前规则是最后一条规则,停止分析以后规则的重写。(如果满足条件的话)

OR 或的意思,上例中既是www.test.net.cn或test.net.cn开头的域名。

NC 不区分大小写。

$N 引用RewriteRule模板中匹配的相关字串。

例如上例中的https://www.exehack.net/test.html$1,我个人测试的结果是:

访问http://www.exehack.net/132 会跳转到 http://www.exehack.net/test.html132

这是个很有用的参数,如果去掉$1则无论http://www.exehack.net开头的地址后面的链接是什么,最后都会转向:http://www.exehack.net/test.html

重定向的缺点是域名无法保留,这一点是不推荐的,所以最好的方法还是对域名进行伪链接设置,写法也很简单,既去掉R=301,重写到当前服务器的相关地址路径即可.

标签:

评论 共 1 条 (RSS 2.0) 发表 评论

  1. 会员头像 牛先生说道:

    浪费我的时间,你rewrite 301转向 怎么可以绑定域名,那就是一个跳转而已,和 apache提供的VirtualHost 真实的绑定域名完全不同,还说建议rewrite。

发表评论

  •   没有头像?

关注我们,实时联系

通知公告">更多...

♥如果喜欢本站可以直接点击订阅博客
♥点击此加入晓残博客会员群加入扣群
♥本站免费提供加密解密服务点击解密
♥伙伴们喜欢本站赏个好评呗

关注微信

有偿服务

博客统计

  • 日志总数:477 篇
  • 评论数目:1480 条
  • 标签总数:40 个
  • 页面总数:8 个
  • 分类总数:17 个
  • 友链总数:25 个
  • 建站日期:2011-02-13
  • 运行天数:2125 天
  • 最后更新:2016-12-6

订阅博客