首页 > 解决方案 > Mac 上的 XAMPP 虚拟主机通配符子域

问题描述

我想以某种方式设置我的虚拟主机,以便在 htdocs 文件夹中没有我的项目,并且我想使用子域来访问它们。因此,例如,与其去“/xampp/htdocs/myproject”内的“http://localhost/myproject”,我更愿意去“http://myproject.sites.local”将位于“/Users/myname/Projects/myproject”内。

我知道我必须去 xampp 中的“etc”文件夹中的 httpd.conf 并取消注释包含虚拟主机的行,这样做。然后我去“/etc/hosts”文件添加“127.0.0.1 sites.local”,然后我的httpd-vhosts.conf文件中有这段代码:

<Directory "/Users/marioplantosar/Projects">
   Options Indexes MultiViews FollowSymLinks
   AllowOverride All
   Require all granted
</Directory>

<Virtualhost *:80>
    VirtualDocumentRoot "/Users/marioplantosar/Projects"
    UseCanonicalName Off
</Virtualhost>

<Virtualhost *:80>
    VirtualDocumentRoot "/Users/marioplantosar/Projects/%1"
    ServerName sites.local
    ServerAlias *.sites.local
    UseCanonicalName Off
</Virtualhost>

我猜第一部分有效,因为如果我访问“http://sites.local”,它会打开项目文件夹根目录(它只列出子文件夹,因为“项目”文件夹内没有索引文件。但另一部分是不工作,它只是抛出“ERR_NAME_NOT_RESOLVED”错误。所以我在 ServerAlias 中有通配符“*”,以便它捕获sites.local的每个子域,我使用“%1”打开“项目”中的相应文件夹"文件夹,但它只是不工作。最奇怪的是它工作了几个月,直到昨天,我不知道发生了什么,它突然停止工作。

标签: apachexamppvirtualhosthosts

解决方案


我解决了这个问题。我在问题中写的所有内容都配置正确,但是由于我在一年前做了所有这些,我完全忘记了 dnsmasq 部分,它不知何故搞砸了。“hosts”文件不支持通配符,因此您必须使用像 dnsmasq 这样的工具,它会自动为我的“Projects”文件夹中的每个文件夹执行 dns 掩码。

对于像我这样遇到类似情况的人,您正确配置了 httpd-vhosts.conf、httpd.conf 和主机文件中的所有内容,但它不起作用,您应该按照本教程设置 dnsmasq:https ://passingcuriosity.com /2013/dnsmasq-dev-osx/


推荐阅读