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

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

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

我希望能够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,需要能够通过本地主机访问。

答案1

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

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

</VirtualHost>

现在你的/意愿是/var/www/html/abc

如果你的文档结构如下:

/
-abc
-edf

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

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

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

DocumentRoot /var/www/html/efg 服务器名称 efg.mydomain.com

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

a2ensite filename

然后重启 apache。现在当您访问子域时(不要忘记将其添加到您的 dns 服务器)。它将使用 efg 作为其 documentroot。

答案2

更改文档根目录

/var/www/html

/var/www/html/abc

答案3

您可以更改指令

DocumentRoot /var/www/html

成为

DocumentRoot /var/www/html/abc

在相应的虚拟主机中。

另一种选择是使用 mod-rewrite 重写每个以 开头的路径,/abc使其不以 开头。

相关内容