如何从两个不同的文件夹(基于子域)加载内容并保留旧的URL?

时间:2019-01-01 06:33:25

标签: regex apache .htaccess url-rewriting subdomain

我的网站是example.com

在我的public_html文件夹中,我有两个文件夹。一个叫做main,另一个叫做report

当有人导航到example.com时,我想提供main文件夹中的内容,但我希望他们的URL保持不变。

因此,如果他们导航到example.com/file.html,我希望他们看到file.html文件夹中的main文件,但我不需要他们的网址更改为example.com/main/file.html

类似地,如果他们导航到report.example.com/report1.pdf,我希望他们看到report1.pdf文件夹中的report文件,但我不需要他们的网址更改为report.example.com/report/report1.pdf

我能够实现的最接近的功能是:

DirectoryIndex index.php index.html index.htm
RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule ^((?!main).*)$ /main/$1

RewriteCond %{HTTP_HOST} ^report.example.com$ [NC]
RewriteRule ^((?!report).*)$ /report/$1 [L]

这似乎在某种程度上可行,但是:

  • 如果有人导航到http://example.com/report/index.html,则服务器会错误地从index.html文件夹而不是public_html/report文件夹加载public_html/main/report文件。通常,这条路径是有道理的,但在这种情况下,我试图更改这种行为。

  • 如果有人导航到http://report.example.com/test,则服务器会正​​确显示public_html/test/index.html文件,但会将其重定向到http://report.example.com/report/test/

如何加载正确的文件并保持URL正确?

1 个答案:

答案 0 :(得分:0)

这应该做:

@time