如何使子目录成为Web域或本地主机的文档根目录

我在文件根目录/var/www/html有一个子目录abc

我希望能够通过在浏览器中input在子目录中运行任何文件any_file.html

localhost/any_file而不是localhost/abc/any_file.htmlmy_domain.com/any_file而不是my_domain.com/abc/any_file.html

我试图写在httpd.conf

 <Directory "/var/www/html/abc"> RewriteEngine On RewriteBase / RewriteRule %{REQUEST_FILENAME} %{REQUEST_FILENAME}\.html </Directory> 

但它不起作用。 Options FollowSymLinks<Directory>激活,所以我相信我不需要再写这个。 有谁知道为什么以及如何解决它? 谢谢。

更新:我有另一个子目录efg ,我需要能够通过本地访问。

在为域名声明Vhost时,您需要添加:

 <VirtualHost *:80> DocumentRoot /var/www/html/abc <Directory /> *your options* </Directory> </VirtualHost> 

现在你的/将是/var/www/html/abc

如果你的文档结构是这样的:

 / -abc -edf 

您现在将默认访问abc文件夹。 如果你还想访问edf文件夹,你有两个select:

  • 对于documentroot是edf的子域创build另一个虚拟主机
  • 将edf文件夹符号链接到abc

Symlinking非常简单(ln命令)。 要创build另一个虚拟主机,你可以在你的sites-available/文件夹中创build一个新文件,或者在sites-available/default的底部添加这些条目sites-available/default

DocumentRoot / var / www / html / efg ServerName efg.mydomain.com

如果你创build了一个新文件,你需要运行:

 a2ensite filename 

并重新启动Apache。 现在,当你访问子域名(不要忘记把它添加到你的DNS服务器)。 它将使用efg作为文档。

更改DocumentRoot

 /var/www/html 

 /var/www/html/abc 

你可以改变指令

 DocumentRoot /var/www/html 

成为

 DocumentRoot /var/www/html/abc 

在相应的虚拟主机中。

另一个select是使用mod-rewrite来重写每个以/abc开头的path。