【发布时间】:2021-12-31 04:16:42
【问题描述】:
我在 Linux 上运行 xampp,想设置虚拟主机,以便在项目之间快速跳转。
我有两个这样的项目:
/home/(user)/webdev/app1 包含一个index.html
/home/(user)/webdev/app2 包含一个index.html
我的httpd.conf 包括这些sn-ps:
<Directory "/home/(user)/webdev/app1">
Options Indexes FollowSymLinks ExecCGI Includes
AllowOverride All
Require all granted
</Directory>
<Directory "/home/(user)/webdev/app2">
Options Indexes FollowSymLinks ExecCGI Includes
AllowOverride All
Require all granted
</Directory>
并且Include etc/extra/httpd-vhosts.conf 未注释。
我的httpd-vhosts.conf 包括:
<VirtualHost *:80>
ServerAdmin webmaster@webdev.app1
DocumentRoot "/home/(user)/webdev/app1"
ServerName webdev.app1
ErrorLog "logs/app1.example.com-error_log"
CustomLog "logs/app1.example.com-access_log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@webdev.app2
DocumentRoot "/home/(user)/webdev/app2"
ServerName webdev.app2
ErrorLog "logs/app2.example.com-error_log"
CustomLog "logs/app2.example.com-access_log" common
</VirtualHost>
我的/etc/hosts 文件如下所示:
127.0.0.1 localhost
::1 localhost
127.0.0.1 webdev.app1
127.0.0.1 webdev.app2
据我了解,我做的一切都是正确的。不幸的是,当我转到webev.app1 或webdev.app2 时,它会提供常规的htdocs 文件夹,而不是修改后的DocumentRoot。当我转到localhost 时,它会提供httpd-vhost.conf 中的第一个名称,在本例中为/home/(user)/webdev/app1。
我期望的行为是在我访问 webdev.app1 时提供 app1,而在我访问 webdev.app2 时提供 app2。我错过了什么?
【问题讨论】:
-
你有没有配置其他
<VirtualHost>块? Apache 将尝试将请求的域与每个<VirtualHost>匹配。如果没有匹配,它将使用从 conf 文件中读取的第一个<VirtualHost>块。 -
@Nic3500 不,这是文件中仅有的两个块。
-
试试这个:
apachectl -t -D DUMP_VHOSTS。它将向您展示 VirtualHosts 的知识。此外,注释掉您的 VirtualHosts 之外的任何 DocumentRoot 指令。 -
@Nic3500
apachectl -t -D DUMP_VHOSTS给出了这个:*:80 pop-os.localdomain (/etc/apache2/sites-enabled/000-default.conf:1)看起来它不知道我的虚拟主机。我尝试在 httpd.conf 中评论 DocumentRoot 指令,但没有帮助。同样的行为。 -
@Nic3500 另外,当我运行 systemctl 时,即使 xampp / lampp 正在运行,apache2 也根本不在列表中。也许这与它有关?
标签: php apache xampp virtualhost