我的机器上运行着一个 Apache 服务器(端口 80)
我的机器上运行着一个 Zope 服务器(端口 8080)

我希望所有用户,无论域(让我们现在使用 www.example.com)无缝地推送到 zope 实例

IE
如果我在浏览器中输入
http://www.example.com/mysite

它将显示效果
http://www.example.com:8080/mysite

但是

我希望 URL 仍然说
http://www.example.com/mysite

(子)域应该无关紧要,因为将有 2 或 3 个域指向同一服务器

我应该查看 mod_rewrite 或 mod_proxy 吗?

我有一半的 mod_rewrite 工作,但它改变了浏览器中的内容?

目前正在尝试

RewriteEngine on
RewriteRule ^($|/.*) http://localhost:8080/$1 [P]

但得到服务器 500

使用“http://localhost/mysite”连接

最佳答案

Zope 通过在路径中使用 VirtualHostMonster 标志进行一些特殊的重写来支持开箱即用的场景。这确保了 Zope(以及扩展名 Plone)生成的任何 URL 对于代理请求也是正确的。

您应该同时使用 mod_rewritemod_proxy ,它们会协同工作。

为了更轻松地创建正确的重写 URL,有人构建了一个出色的 RewriteRule Witch 。插入您的特定示例输出:

RewriteRule ^/mysite($|/.*) \
http://127.0.0.1:8080/VirtualHostBase/\
http/%{SERVER_NAME}:80/mysite/VirtualHostRoot/_vh_mysite$1 [L,P]

因此,对于任何以 http://www.example.com/mysite 为根的 URL,重写它们以从运行在 localhost 端口 8080 上的服务器提供服务,确保 Zope 生成具有相同根的 URL。

有关更多详细信息,请参阅 Zope wiki 上的 detailed documentation on the VirtualHostMonster feature

关于Apache 重写或代理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11936922/

10-13 09:14