Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess:使用代理重定向/重写隐藏子域_.htaccess_Mod Rewrite_Redirect_Subdomain_Mod Proxy - Fatal编程技术网

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

.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代码在服务器

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

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

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

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

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

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

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

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

尝试修复1:

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。