再会。
我正在设置一台 Mac 用于本地开发,并使用以下内容配置了 dnsmasq.conf:
address=/.dev/127.0.0.1
我希望通过 本地运行网站,http://client1.ext.dev/index.html
它将映射到本地文件夹/www/sites/client1.ext/htdocs/index.html
。当然,这里的变量是client#
,它与之关联的ext
可以是任何正常的 TLD——.com、.net、.info 等。
我已经尝试了我能想到的所有排列,但似乎无法让 httpd.conf 正确映射(技术上是我的 httpd-vhosts.conf 文件)。
<Virtualhost *:80>
VirtualDocumentRoot /www/sites/%-2+/htdocs
#ServerName sites.dev
ServerAlias *.dev
UseCanonicalName Off
</Virtualhost>
在我的浏览器中使用这个 uri client1.com.dev/index.html
,我的日志文件读取File does not exist: /www/sites/client1.com
为什么 VirtualDocumentRoot 的剩余映射不起作用?(“/htdocs”部分未被添加。)。
许多帖子表明应该如此,但是手册页(http://goo.gl/Ghff5G) 不显示 %-mapping 之外的任何其他目录。
我也尝试过在指令中使用 RewriteRules,但没有成功(而且我很确定我做得不正确)。
奖金
如果我有一个子域名,我的浏览器就会直接转到 OpenDNS(我已将其配置为我的内部 IP 之后的默认值)并说它找不到sub.client1.com.dev
我想要映射到的域名/www/sites/sub.client1.com/htdocs
。
谢谢你!
答案1
由于您有 1:1 映射,您应该能够使用完整的 URL;
<Virtualhost *:80>
VirtualDocumentRoot /www/sites/%0/htdocs
ServerName %0
UseCanonicalName Off
</Virtualhost>
以上内容也适用于子域名。
我做了一些类似的事情,除了使用 .dev TLD 代替实际的 TLD,并且对于不使用我的本地 dnsmasq dns 的设备,还使用 xip.io 的别名。
# Any .dev folder in ~/Sites
#
<VirtualHost *:80>
VirtualDocumentRoot "/Users/phunky/Sites/%1.0.%-1.0/public"
ServerName %-2.0.%-1.0
ServerAlias %-2.0.%-1.0.*.xip.io
</VirtualHost>
现在,如果我能弄清楚如何让子域映射到 VirtualDocumentRoot 内的备用文件夹,我会非常高兴。