【问题标题】:.htaccess: hiding subdomain with proxy redirect / rewrite.htaccess:使用代理重定向/重写隐藏子域
【发布时间】:2016-02-12 23:47:30
【问题描述】:

我需要访问位于我域子文件夹中的网站。

挑战 - 由于我的托管结构,所有站点都位于主域服务器的子文件夹中。域映射到每个站点的这些文件夹。然而,主域像这样映射到服务器根目录 -

• /www/(www.masterdomain.com 的根目录)

  • /文件夹 1/(www.site1.com 的根目录)

  • /文件夹 2/(www.site2.com 的根目录)

  • /文件夹 3/(www.site3.com 的根目录)

  • /文件夹 4/(主域的所需根)

如果我将 CMS 安装在文件夹 4 中,一切都很好,但 CMS 代码会在服务器根目录中创建新资产(我认为使用 DOCUMENT_ROOT),而不是在子文件夹中。

尝试修复 1:

使用重写删除子文件夹并将所有路径设置为包含子文件夹。 失败 - CMS 可以按需要运行,但资产仍会在根目录中创建。

尝试修复 2:

将子域映射到文件夹并重写 URL 以删除子域。 失败:CMS 在子域上工作并在子文件夹中创建资产(赢!),但无法重写子域。

尝试修复 3:

将子域映射到文件夹,并使用主域中的代理标志以不可见的方式从中加载内容。

取得了进展!主页显示正确的 URL,但链接的文件和子文件夹不起作用。

所以我现在可以通过以下方式访问我的网络应用: app.exampledomain.com(应用程序在所有方面都能完美运行) 要么 exampledomain.com(有效的代理,所有子文件夹和链接都已损坏)

这是我的 htaccess:

Options +FollowSymLinks

RewriteEngine On
RewriteBase /

# Proxy subfolders
RewriteRule ^exampledomain.com/(.+?)?$ http://app.exampledomain.com/$1 [P,L,NC]
# Proxy main
RewriteRule ^(exampledomain.com)?$ http://app.exampledomain.com/ [P,L,NC]

那么为什么我的子文件夹/资产不起作用? .htaccess 有问题吗?逻辑不好?

重要提示 - 子文件夹页面称为 index.php,因此可以从 - /文件夹/ 页面上损坏的链接采用这种格式 - js/foundation.min.js

谢谢。

【问题讨论】:

    标签: .htaccess mod-rewrite redirect subdomain mod-proxy


    【解决方案1】:

    RewriteRule 对域名一无所知,它只适用于本地路径。

    相反,检查 RewriteCond 中的域名:

    RewriteCond %{HTTP_HOST} ^(www\.)*exampledomain\.com$ [NC]
    RewriteRule (.*) http://httpd.apache.org/$1 [P,L]
    

    但是在这里使用 mod_alias 或 VirtualHost 会是一个更正确的决定。

    【讨论】:

    • 感谢您的提示。在这种情况下,我无法使用 VirtualHost,但我会尽快查看 mod_alias。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    • 2014-02-28
    • 2013-11-12
    • 2016-05-16
    • 2017-11-05
    • 2016-01-17
    • 1970-01-01
    相关资源
    最近更新 更多