
我已經使用 mod_vhost 別名有一段時間了,不允許我捕獲指向我的託管提供者的任何網域的預設伺服器設定。
現在我還希望能夠在每個網域(assets.domain.xyz、domain.xyz)上擁有子網域的能力,但我似乎無法同時啟用這兩個網域。
<VirtualHost *:80>
UseCanonicalName Off
VirtualDocumentRoot "/www/%1.0.%-1.0/public"
ServerName %1.0.%-1.0
ServerAlias %1.0.%-1.0.*.xip.io
<Directory />
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
UseCanonicalName Off
VirtualDocumentRoot "/www/%2.0.%-1.0/assets"
ServerName assets.%2.0.%-1.0
ServerAlias assets.%2.0.%-1.0.*.xip.io
</VirtualHost>
無論哪一個先起作用,後者都會被跳過。
這可能嗎?我想防止自己每次有一個新網域指向我時都必須重複此操作並試圖避免編寫任何腳本。
編輯 我正在嘗試獲取它,以便我可以擁有兩個通用映射,如下所示:
domain.dev => /www/domain.dev/public
assets.domain.dev => /www/domain/assets
如果只擁有 /public/assets 更簡單,那麼我會很高興,因為無論如何這只會提供靜態內容。
答案1
我讓它工作的唯一方法是添加一個非動態虛擬主機來處理子網域。
<VirtualHost *:80>
ServerAlias %-2.0.%-1.0
VirtualDocumentRoot /www/%-2.0.%-1.0/public
<Directory />
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerAlias assets.*
VirtualDocumentRoot /www/%-2.0.%-1.0/assets
<Directory />
Order deny,allow
Allow from all
AllowOverride None
SetHandler default-handler
php_flag engine Off
</Directory>
</VirtualHost>
現在就這樣,因為至少我不必經常重複它。