我已经在xampp上安装了一个在xampp上安装的通配符vhost,因为我想在localhost中测试一些应用程序,而不必为每个应用程序添加太多行到vhosts.conf。我认为这是最简单最简单的方法是将以下内容添加到我的vhost.conf中:
<VirtualHost *:80>
ServerAlias *.localhost
VirtualDocumentRoot "C:/xampp/htdocs/%1/"
</VirtualHost>
<VirtualHost *:443>
ServerAlias *.localhost
VirtualDocumentRoot "C:/xampp/htdocs/%1/"
SSLEngine on
SSLCertificateFile "conf/ssl.crt/server.crt"
SSLCertificateKeyFile "conf/ssl.key/server.key"
<Directory "C:/xampp/htdocs/%1/">
AllowOverride All
Options Indexes FollowSymLinks MultiViews
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
这让我可以在htdocs的foldername中访问superawesomeapp1作为localhost的子域。因此,foo中的任何内容都位于foo.localhost
并且位于bar.localhost
,依此类推。
这很有效,直到我有一个应用程序,希望将以下内容添加到vhost.conf:
<VirtualHost *:80>
ServerName johnny.localhost
ServerAlias johnny.localhost
DocumentRoot "C:/xampp/htdocs/heyjohnny/web"
<Directory "C:/xampp/htdocs/heyjohnny/web">
AllowOverride None
Order Allow,Deny
Allow from All
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
</Directory>
<Directory "C:/xampp/htdocs/heyjohnny/web/bundles">
<IfModule mod_rewrite.c>
RewriteEngine Off
</IfModule>
</Directory>
</VirtualHost>`enter code here`
vhost服务器别名会覆盖后者,但是我无法弄清楚如何覆盖以前的注释并手动混搭我要添加的每个vhost的密钥,这会在一段时间后增加。我注意到它也覆盖了将http重定向到https的任何尝试。我可能会在localhost上运行其中一些东西,但我打算最终在局域网中使用其中一些东西。我尝试重新排序条目,将通配符别名放在最后,但这并没有改变任何东西。我很可能做错了,但我愿意接受建议。