abcfy2 发表于 2013-04-10 17:58

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 09:59

本帖最后由 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

abcfy2 发表于 2013-04-11 10:47

回复 2# wenhq


    rewrite不是地址重写么?这样的话用户看到的URL会改变的啊。
这种情况下应该用redirect??

wenhq 发表于 2013-04-11 10:55

nginx 的proxypass也可以啊。

abcfy2 发表于 2013-04-11 10:58

回复 4# wenhq


    apache也有这个,是反向代理,一直不太明白反向代理和redirect访问重定向有什么不同

wenhq 发表于 2013-04-11 11:00

你访问外网,如果内部是私有IP,那有可能用到代理。
如果是服务器,需要访问内部资源,就是反向代理。
rewrite是重写,跟反向代理有什么关系?

chenyx 发表于 2013-04-11 14:42

本帖最后由 chenyx 于 2013-04-11 17:18 编辑

<VirtualHost *:80>
ServerNamewww.b.com
   DocumentRoot A的Documentroot/b
</VirtualHost>
试试添加这个看看

abcfy2 发表于 2013-04-11 16:44

回复 7# chenyx


    那段乱码是怎么回事?
而且有没有一种基于正则表达式的实现方式?如果每次新加域名了都这么搞的话工作量会加大,而且每次都需要对新域名建立虚拟主机,需要down掉服务使配置生效,不是很合适

abcfy2 发表于 2013-04-11 16:46

回复 6# wenhq


    地址重写的话是不是浏览器的URL地址栏也会发生改变?有没有办法让用户的URL地址栏不变呢?用户感觉访问的还是www.b.com,实际是从www.a.com/b获取数据

chenyx 发表于 2013-04-11 17:22

乱码是因为粘贴的时候带进来的,当时没有,我也不知道怎么回事.
页: [1] 2
查看完整版本: apache如何实现基于正则表达式的反向代理或者重定向