apache - 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”打开“项目”中的相应文件夹"文件夹,但它只是不工作。最奇怪的是它工作了几个月,直到昨天,我不知道发生了什么,它突然停止工作。
解决方案
我解决了这个问题。我在问题中写的所有内容都配置正确,但是由于我在一年前做了所有这些,我完全忘记了 dnsmasq 部分,它不知何故搞砸了。“hosts”文件不支持通配符,因此您必须使用像 dnsmasq 这样的工具,它会自动为我的“Projects”文件夹中的每个文件夹执行 dns 掩码。
对于像我这样遇到类似情况的人,您正确配置了 httpd-vhosts.conf、httpd.conf 和主机文件中的所有内容,但它不起作用,您应该按照本教程设置 dnsmasq:https ://passingcuriosity.com /2013/dnsmasq-dev-osx/
推荐阅读
- system-verilog - 模块中的systemverilog参数数组,实例化模块时如何设置参数数组单个元素
- php - 如何选择不同表中不存在的行?
- javascript - jQuery 中的“没有类”选择器。通过包含多个类的特定类名选择一个元素
- machine-learning - 图片中的水印是深度学习的障碍吗?
- java - 避免“找不到带有 URI 的 HTTP 请求的映射”或包罗万象的控制器
- python - 给定一个单词列表和一个句子,找到句子中出现的所有单词,无论是整体还是作为子字符串
- java - Java中如何分隔字符、数字和符号?
- html - Rmarkdown 渲染功能:将 RMD 转换为 HTML 时显示数据框的问题
- linux - 从 /var 开始的 bitbucket 存储库
- php - 似乎无法将预制正文放入我的 php 电子邮件