Apache嵌套的虚拟主机

我有一个Apache服务器中的两个虚拟主机,我想做的事情,但我不知道是否有可能。

事情是我有主要的应用程序开发和ruby和博客是在wordpress。 所以现在我有这样的东西:

  • example.com和blog.example.com

我想要做的是,对www.example.com/blog的所有请求都由blog.example.com提供,但是不会执行redirect(即,我不希望用户看到URL中的更改)

我到目前为止所尝试的是在VirtualHost中做一个代理:

<Location /blog> ProxyPassReverse http://blog.example.com ProxyPassReverse http://blog.example.com:80 RewriteEngine On RewriteRule blog/(.*)$ http://blog.example.com/$1 [QSA,P,L] </Location> 

它可以工作,但是一旦我在另一个应用程序中,所有链接都在blog.example.com中,而不是在example.com/blog中。

你知道这个解决方法吗?

感谢您的帮助。

链接在您的内容中处理,而不是由Apache处理。 ProxyPassReverse仅翻译redirect – 其他所有内容都在您身上。

通过在内容中使用主机相对path来修复它 – 而不是链接到http://blog.example.com/dir/page.html ,链接到/dir/page.html

如果链接是由WordPressdynamic生成的,那么可能是读取主机头; ProxyPreserveHost将是正常的解决方法,但是不能用于同一个监听器上的两个虚拟主机 – 你最终会把请求直接提供给正在进行代理的虚拟主机。

对于反向代理,修复你的内容输出中的链接(如其他答案中提到的)是更好的方法,但mod_proxy_html是另一种可能性。

也就是说,如果你使用同一个Apache服务器为两个应用程序提供服务,为什么还要为这两个虚拟主机打扰呢? 您应该能够从同一个虚拟主机提供两种不同的语言,这样您就可以完全跳过反向代理步骤。