将多个域重定向到子文件夹并从 URL 中隐藏子文件夹

Ahm*_*mad 2 domain .htaccess

我在同一个 ip 和同一个文档根目录上安装了两个虚拟主机,因为我想在文档根目录中使用共享文件和内容。

我希望我的第二个网站指向文档根目录的子文件夹

http://example.com Loads http://example.com/subfolder
Run Code Online (Sandbox Code Playgroud)

我在 .htaccess 中尝试了各种重写规则,它们都可以重定向,但在 url 中维护子文件夹,我不喜欢我的意思是 url 将是

 http://example.com/subfolder
Run Code Online (Sandbox Code Playgroud)

虽然我想要

 http://example.com
Run Code Online (Sandbox Code Playgroud)

这些是我尝试过的

RewriteCond %{HTTP_HOST} ^(www.)?example.com$   
RedirectMatch ^/$ http://example.com/subfolder
Run Code Online (Sandbox Code Playgroud)

或者

RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(.*)$ /subfolder/$1 [L]
Run Code Online (Sandbox Code Playgroud)

第二个也给出了 500 内部服务器错误,我该怎么办?

小智 6

您想要做的不是进行重定向,而是使用 RewriteRule 重写查询。所以它应该是这样的:

RewriteCond %{HTTP_HOST} ^(www.)?example1.com$   
RewriteRule !^subfolder1/ subfolder1%{REQUEST_URI} [L]
RewriteCond %{HTTP_HOST} ^(www.)?example2.com$   
RewriteRule !^subfolder2/ subfolder2%{REQUEST_URI} [L]
Run Code Online (Sandbox Code Playgroud)

例如 查询http://www.example1.com/foo.html将被 Apache 视为查询http://www.example1.com/subfolder1/foo.html。更改此查询中的域,文件将从 subfolder2 提供。

在测试我的解决方案时,我也发现了这一点,与您的问题非常相似:
由于可能的配置错误,请求超出了 10 个内部重定向的限制。?