【问题标题】:Rewrite Subdomain As A Different Subdomain + Sub-directory将子域重写为不同的子域+子目录
【发布时间】:2016-11-20 10:06:26
【问题描述】:

我一直在想办法弄清楚如何做到这一点。

我只有 Office 云版本(SaaS)。访问它的域如下所示:mydomain.onlyfoffice.com

它具有应用自定义域的功能,因此我通过调整 onlyoffice 控制面板中的设置将其更改为:desk.mydomain.com,我必须将 A 记录更改为 CNAME intranet.onlyoffice.com。我现在可以通过 desk.mydomain.com 访问它。

现在这是我的问题。我怎样才能使 URL 看起来像这样:office.mydomain.com/desk/?我还需要它来处理 URL,例如 office.mydomain.com/desk/app/etc/etc...

这可能吗?

这种设置的原因是因为我试图将我用于业务的所有应用程序组织在一个子域下:office.mydomain.com。我在其他子目录中安装了其他非 saas 应用程序,例如:office.mydomain.com/code/office.mydomain.com/analytics/ 等。

由于我无法将 onlyoffice 的自定义域设置为子域 + 目录,因此我正在考虑将其设置为不同的子域,然后使用 mod_rewrite 或代理通行证之类的东西来重写 url。

【问题讨论】:

    标签: apache .htaccess mod-rewrite


    【解决方案1】:

    mod_rewrite 无法做到这一点。

    我相信您正在寻找ProxyPass 指令。首先您需要启用mod_proxyproxy_http,如下所示:

    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
    

    您还应该添加一些访问权限:

    <Proxy *.>
        # If using Apache 2.4, replace the next 2 lines with 'Require all granted', without quotes
        Order Deny,Allow
        Deny from all
    </Proxy>
    

    那么你需要把它添加到你的apache2.conf(或httpd.conf)文件中(你不能从.htaccess做到这一点):

    ProxyPass     /desk/     http://www.desk.mydomain.com/
    ProxyPassReverse /desk/  http://www.desk.mydomain.com/
    

    第一行启用代理(几乎就像重写),ProxyPassReverse 本质上是为了让发送到浏览器的标头不使用http://www.desk.mydomain.com

    启用模块并进行配置更改后不要忘记重新启动 apache。

    【讨论】:

      【解决方案2】:

      你可以用重写+代理模块来做到这一点。确保你已经激活了 rewrite、proxy 和 proxy_http 模块。然后在office.mydomain.com的.htaccess文件中使用

      RewriteRule ^desk/(.*) http://desk.mydomain.com/$1 [P,L]
      

      这应该可以解决问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-29
        • 2012-05-25
        相关资源
        最近更新 更多