【问题标题】:apache mod_rewrite subdomain to dirapache mod_rewrite 子域到目录
【发布时间】:2011-05-30 04:30:41
【问题描述】:

我有 4 台服务器,我想将它们与域合并。比如我现在在做什么:

我想要

如果有人访问www.example.org/games/

我想在浏览器中显示www.example.org/games/,但实际上它的文件将托管在 games.example.org 服务器中?

【问题讨论】:

  • games.example.org 是一个单独的服务器,还是只是另一个虚拟服务器,托管在同一台机器上?

标签: apache mod-rewrite directory subdomain


【解决方案1】:

纯粹的 mod_rewrite 规则是不够的,因为它们还需要 mod_proxy 才能使子请求正常工作。特别是如果您希望在返回页面时自动重写所有绝对链接。如果您拥有 Apache 的完全访问权限,则可以在 www.example.org 域的虚拟主机部分使用此代码:

<Location  /games>
        ProxyPassReverse http://games.example.org
        ProxyPassReverse http://games.example.org:80

        RewriteEngine On
        RewriteRule games(.*)$ http://games.example.org/$1 [QSA,P,L]
</Location>

最后一个 RewriteRule 确实是您所需要的,但“P”标志可能无法工作,除非您也可以加载 mod_proxy。确保使用最严格的设置加载 mod_proxy,并通过 ProxyPass 指令允许代理请求。

ProxyPassReverse 也不能在 .htaccess 中工作。它必须在 Apache vhost 配置本身中。

希望有帮助!

【讨论】:

  • 谢谢伙计,它很棒,但我现在的问题是,如果我想用这个重写规则访问games.example.org/signup,我可以访问它抛出examples.org/games/signup?最亲切的问候
  • 没错!它应该得到任何游戏(。*)并将其转发到正确的 URL。实际上上面的一个更正(我将编辑),重写规则应该引用子域而不是原始域。
  • 我现在所拥有的 ProxyPassReverse games.example.com ProxyPassReverse games.example.com:80 RewriteEngine On RewriteRule games(.*)$ games.example.com/$1 [QSA,P,L] 工作,但它给了我这个网址 www.example.com/web/login.php 这将引发 404 页面找不到我如何像这样 www.example.com/games/web/login 在任何网址中附加文字游戏。 php ?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-23
  • 2011-07-04
  • 1970-01-01
  • 2011-06-28
  • 2013-01-26
相关资源
最近更新 更多