我正在尝试了解如何设置 httpd.conf 和 httpd-vhosts.conf 文件。我想在 Windows 7 上使用 Wampserver 进行本地设置,这样我只需添加新目录并快速编辑 hosts 文件即可添加新项目。我希望它至少适用于以下通用域格式:domain.com、www.domain.com、sub.domain.com 和 www.sub.domain.com。
以下是我目前所拥有的。它似乎有效,但我只是认为可能存在更好、更简洁的方法:
NameVirtualHost *:80
<Directory "C:/wamp/www/%0/public_HTML">
Options Indexes FollowSymLinks Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
<VirtualHost *:80>
VirtualDocumentRoot "C:/wamp/www/%0/public_HTML"
</VirtualHost>
<VirtualHost *:80>
ServerAlias www.*.*.com
VirtualDocumentRoot "C:/wamp/www/%3+/public_HTML/%2"
</VirtualHost>
<VirtualHost *:80>
ServerAlias www.*.com
VirtualDocumentRoot "C:/wamp/www/%2+/public_HTML"
</VirtualHost>
<VirtualHost *:80>
ServerAlias *.*.com
VirtualDocumentRoot "C:/wamp/www/%2+/public_HTML/%1"
</VirtualHost>
我的文件夹结构如下:C:/wamp/www/(project)/public_HTML/(文件夹命名为sub.domain.com的子部分)
这可行,但如果我以任何方式更改 VirtualHosts 的顺序,则会导致上述至少一种域格式出现 404 错误。我想知道是否有人可以向我解释这是为什么?此外,如果有人有更好的方法建议,我很乐意听听。
谢谢!
答案1
我遇到了类似的问题,但模式略有不同,我的虚拟主机使用“.dev”后缀,并使用完整域名作为文件夹名称。
我得到了与VirtualDocumentRoot /www/sites/%-2+/public_html
...合作的机会
<VirtualHost *:80>
ServerName dev
ServerAlias *.dev
UseCanonicalName Off
VirtualDocumentRoot /www/sites/%-2+/public_html
</VirtualHost>
例如,上述代码将对 test.com.dev 的请求解析为 www/sites/test.com/public_html
/www/%2+/public_html/%1
我认为你只需要解决最后一个问题测试网但请www/test.com/public_html/dev
检查文档以找到确切的模式:http://httpd.apache.org/docs/2.0/mod/mod_vhost_alias.html#interpol
我还发现这篇文章很有帮助: http://blog.theclickpro.com/2010/12/dynamic-apache-configuration-for-php.html
您还可以使用 DNSmasq 来自动完成主机输入。