Apache – 从文档根目录服务目录,不需要放入文档根目录

现在,我把我的DocumentRoot设置为/var/www/html ,我的URL是domain.com

我的逻辑顺序是,我拥有domain.com主页,全部位于/var/www/html/{index.html,about.html,...} 。 我也有“不相关的”子网站,我想链接从domain.com/subsite1 domain.com/subsite2

有什么办法可以将domain.com移动到一个文件夹,而不必移动该文件夹中的subsite1subsite2 。 我也不想将任何别名硬编码到子域或我的域的顶部页面。

本质上,我想收集我的DocumentRoot中分散的HTML文件到一个文件夹中,但仍然可以访问它们,而不包含包含目录的URL。 我还希望我的DocumentRoot的现有子目录保留在原来的位置并保留相同的URL。

如果我理解正确的话,你有两个选项,一个在服务器内部改变URL,其余的互联网不知道它已经改变,其他的redirect所有的请求到新的URL。

对于第一个选项,你会使用mod_rewrite 。
例如。

 RewriteEngine On RewriteRule ^/page\.html$ /newdir/page.html [L] 

或者一个通用的规则,如果文件不存在

 RewriteEngine On RewriteCond %{DOCUMENT_ROOT}/$1 !-f RewriteRule (.*) /newdir/$1 [L] 

如果您想将所有请求redirect到新的URL,那么您可以使用redirect

例如。

 Redirect 301 /page.html /newdir/page.html