我的机器上运行着一个 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_rewrite
和 mod_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/