apache如何实现基于正则表达式的反向代理或者重定向
比如我有一个网站www.a.com,现在将www.b.com,www.c.net域名解析都解析到www.a.com所在的服务器IP,他们拥有相同的IP。现在要求访问www.b.com实际访问www.a.com/b,访问www.c.net实际访问www.a.com/c,但是用户看到的浏览器URL不变
具体如何实现呢?
www.a.com已经加到
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.a.com
</VirtualHost>
其他的域名该怎么办呢?能否基于正则表达式?以后可能还会解析更多的域名过来,都要求这样映射的。 本帖最后由 wenhq 于 2013-04-11 10:05 编辑
RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain\.com
RewriteRule www\.(.*)\.com$ http://www.domain.com/$1
参考http://man.chinaunix.net/newsoft/ApacheManual/misc/rewriteguide.html 回复 2# wenhq
rewrite不是地址重写么?这样的话用户看到的URL会改变的啊。
这种情况下应该用redirect?? nginx 的proxypass也可以啊。 回复 4# wenhq
apache也有这个,是反向代理,一直不太明白反向代理和redirect访问重定向有什么不同 你访问外网,如果内部是私有IP,那有可能用到代理。
如果是服务器,需要访问内部资源,就是反向代理。
rewrite是重写,跟反向代理有什么关系? 本帖最后由 chenyx 于 2013-04-11 17:18 编辑
<VirtualHost *:80>
ServerNamewww.b.com
DocumentRoot A的Documentroot/b
</VirtualHost>
试试添加这个看看 回复 7# chenyx
那段乱码是怎么回事?
而且有没有一种基于正则表达式的实现方式?如果每次新加域名了都这么搞的话工作量会加大,而且每次都需要对新域名建立虚拟主机,需要down掉服务使配置生效,不是很合适 回复 6# wenhq
地址重写的话是不是浏览器的URL地址栏也会发生改变?有没有办法让用户的URL地址栏不变呢?用户感觉访问的还是www.b.com,实际是从www.a.com/b获取数据 乱码是因为粘贴的时候带进来的,当时没有,我也不知道怎么回事.
页:
[1]
2