apache2.4中wildcard subdomain的virtualhost wildcard subdomain
Virtualhost wildcard subdomain of wildcard subdomain in apache2.4
目前,我已经完成了如下通配符子域配置:
<VirtualHost *:80>
ServerAlias *.domain
ErrorLog /tmp/error.log
CustomLog /tmp/access.log combined
VirtualDocumentRoot /var/www/%1/public
<Directory "/var/www">
DirectoryIndex index.php
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
但是如果我输入 sub.sub.domain 将 return 到默认虚拟主机。如何配置到 main/root 域的路径?我在 conf 下尝试但仍然没有工作:
<VirtualHost *:80>
ServerAlias *.*.domain
ErrorLog /tmp/error.log
CustomLog /tmp/access.log combined
VirtualDocumentRoot /var/www/%2/public
<Directory "/var/www">
DirectoryIndex index.php
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
我将 %2 更改为 %1 仍然无效。
什么是正确的语法?
上面的代码语法正确,但我只是把它放在了错误的位置顺序上。所以正确答案是把第二个放在第一个上面。
下面是完整的配置示例:
<VirtualHost *:80>
ServerAlias *.*.domain
ErrorLog /tmp/error.log
CustomLog /tmp/access.log combined
VirtualDocumentRoot /var/www/%2/public
<Directory "/var/www">
DirectoryIndex index.php
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerAlias *.domain
ErrorLog /tmp/error.log
CustomLog /tmp/access.log combined
VirtualDocumentRoot /var/www/%1/public
<Directory "/var/www">
DirectoryIndex index.php
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Apache 与 skipping/ignore 相同的 subdomain/domain 配置,从顶部升序排列。 sub.sub.domain 也是 *.domain 的一部分,所以如果我想配置它,我必须将配置放在顶部,或者如果使用不同的文件配置,请使用较低的数字名称。
多个 ServerAlias 或 ServerName 或 NameVirtualHostlines 将产生 "NameVirtualHost *:80 has no VirtualHosts" 警告。不过,Apache 将忽略第二个指令并使用第一个定义的 NameVirtualHost 行。这似乎发生在一个人使用多个虚拟主机配置文件并且不明白你只需要定义一个特定的 NameVirtualHost 行一次
简单的解决方案,但我解决了几个小时,我希望它能帮助像我一样的其他人。
目前,我已经完成了如下通配符子域配置:
<VirtualHost *:80>
ServerAlias *.domain
ErrorLog /tmp/error.log
CustomLog /tmp/access.log combined
VirtualDocumentRoot /var/www/%1/public
<Directory "/var/www">
DirectoryIndex index.php
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
但是如果我输入 sub.sub.domain 将 return 到默认虚拟主机。如何配置到 main/root 域的路径?我在 conf 下尝试但仍然没有工作:
<VirtualHost *:80>
ServerAlias *.*.domain
ErrorLog /tmp/error.log
CustomLog /tmp/access.log combined
VirtualDocumentRoot /var/www/%2/public
<Directory "/var/www">
DirectoryIndex index.php
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
我将 %2 更改为 %1 仍然无效。
什么是正确的语法?
上面的代码语法正确,但我只是把它放在了错误的位置顺序上。所以正确答案是把第二个放在第一个上面。
下面是完整的配置示例:
<VirtualHost *:80>
ServerAlias *.*.domain
ErrorLog /tmp/error.log
CustomLog /tmp/access.log combined
VirtualDocumentRoot /var/www/%2/public
<Directory "/var/www">
DirectoryIndex index.php
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerAlias *.domain
ErrorLog /tmp/error.log
CustomLog /tmp/access.log combined
VirtualDocumentRoot /var/www/%1/public
<Directory "/var/www">
DirectoryIndex index.php
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Apache 与 skipping/ignore 相同的 subdomain/domain 配置,从顶部升序排列。 sub.sub.domain 也是 *.domain 的一部分,所以如果我想配置它,我必须将配置放在顶部,或者如果使用不同的文件配置,请使用较低的数字名称。
多个 ServerAlias 或 ServerName 或 NameVirtualHostlines 将产生 "NameVirtualHost *:80 has no VirtualHosts" 警告。不过,Apache 将忽略第二个指令并使用第一个定义的 NameVirtualHost 行。这似乎发生在一个人使用多个虚拟主机配置文件并且不明白你只需要定义一个特定的 NameVirtualHost 行一次
简单的解决方案,但我解决了几个小时,我希望它能帮助像我一样的其他人。