.htaccess:使用代理重定向/重写隐藏子域
我需要从我的域访问位于子文件夹中的网站。 挑战-由于我的托管结构,所有站点都位于主域服务器的子文件夹中。域映射到每个站点的这些文件夹。但是,主域映射到服务器根目录,如下所示- •/www/(www.masterdomain.com的根目录).htaccess:使用代理重定向/重写隐藏子域,.htaccess,mod-rewrite,redirect,subdomain,mod-proxy,.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代码在服务器
- /文件夹1/(www.site1.com的根目录)
- /文件夹2/(www.site2.com的根目录)
- /文件夹3/(www.site3.com的根目录)
- /文件夹4/(主域的所需根)
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]
使用“重写”删除子文件夹,并将所有路径设置为包含子文件夹。
失败-CMS按需要运行,但仍在根目录中创建资产
尝试修复2:
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]
将子域映射到文件夹并重写URL以删除子域。
失败:CMS在子域上工作并在子文件夹中创建资产(win!),但无法重写子域
尝试修复3:
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]
将子域映射到文件夹,并使用主域中的代理标志以不可见的方式加载其中的内容
取得了进展!主主页显示正确的URL,但链接的文件和子文件夹不起作用
因此,我现在可以从以下位置访问我的web应用程序:
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
谢谢。重写规则对域名一无所知,它只适用于本地路径 相反,请在“重写”框中检查域名:
RewriteCond %{HTTP_HOST} ^(www\.)*exampledomain\.com$ [NC]
RewriteRule (.*) http://httpd.apache.org/$1 [P,L]
但是在这里使用mod_alias或VirtualHost更为正确。谢谢您的提示。在本例中,VirtualHost对我不可用,但我将很快研究mod_alias。