.htaccess:使用代理重定向/重写隐藏子域

时间:2015-11-11 19:14:01

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

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

挑战 - 由于我的托管结构,所有网站都位于子域文件夹中的主域服务器上。域将映射到每个站点的那些文件夹。但是,主域映射到服务器根,如下所示 -

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

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

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

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

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

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

尝试修复1:

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

尝试修复2:

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

尝试修复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

感谢。

1 个答案:

答案 0 :(得分:0)

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

相反,请检查RewriteCond中的域名:

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

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