【问题标题】:private to public domain redirecting in apacheapache中的私有到公共域重定向
【发布时间】:2013-09-02 11:13:06
【问题描述】:

我有两个 apache 网络服务器,一个是公共的,一个是私有的。要求是用户将访问 PUBLIC 域并从 PRIVATE 域获取内容。 PUBLIC 域应为空,并且仅包含用于用户身份验证的 .htaccess 文件。 所有的请求都会到达http://public.com:60001/,并被apache重写为http://private:60001/。用户无法直接访问 PRIVATE 域,但托管 PUBLIC 域的服务器已连接到它。

为了实现这一点,我更新了 PUBLIC 域的虚拟主机以包含以下内容:

<Directory "/wwwroot/public.com">
    RewriteEngine on
    RewriteBase /
    RewriteRule ^(.*)$ http://private:60001/$1 [P]
    ProxyPassReverse http://private:60001/
</Directory>

执行此操作后,页面正在加载,但有两个问题:

  1. 网站页面的 html 代码中的所有链接都将采用http://private:60001/ 的形式,因此当用户单击链接时,他们会收到 404 错误(因为他们没有连接到该链接)。 apache 有没有办法将这些链接重写为http://public.com:60001/
  2. Ajax 调用不起作用 - 生成 404 错误。我认为这可能是因为与第 1 点相同的问题。

感谢您的帮助

【问题讨论】:

    标签: apache .htaccess mod-rewrite mod-proxy


    【解决方案1】:

    Mod_proxy 不会解决您的问题。您将需要从 private 的内容中删除所有主机名。所以不要有这样的链接:

    <a href="http://private:60001/something/">
    

    它们需要看起来像:

    <a href="/something/">
    

    否则,您可以查看mod_proxy_html,它实际上会破坏页面的内容(而不仅仅是请求)并将内容中的链接映射为私有,以便它们链接到公共。有关示例,请参阅this link

    基本上是这样的:

    ProxyHTMLLogVerbose On
    ProxyHTMLLinks  a               href
    ProxyHTMLLinks  link            href
    ProxyHTMLLinks  form            action
    ProxyHTMLLinks  script          src for
    ProxyHTMLLinks  img             src longdesc usemap
    ProxyHTMLLinks  iframe          src
    
    ProxyHTMLEvents onclick ondblclick onmousedown onmouseup \
                onmouseover onmousemove onmouseout onkeypress \
                onkeydown onkeyup onfocus onblur onload \
                onunload onsubmit onreset onselect onchange
    
    ProxyHTMLURLMap url\(http://private:60001([^\)]*)\) url(http://public:60001$1) Rihe
    

    【讨论】:

    • 非常感谢。我不知道 mod_proxy_html。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 2017-01-30
    • 2018-05-02
    • 2012-04-29
    相关资源
    最近更新 更多