Apache-2.4
apache 2.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 將返回預設虛擬主機。如何配置到主/根域的路徑?我在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 通過從頂部升序跳過相同的子域/域配置。sub.sub.domain 也是 *.domain 的一部分,所以如果我想配置它,我必須將配置放在頂部,或者如果使用不同的文件配置使用較小的數字名稱。