我嘗試過搜尋此場景,但似乎無法準確找到此設定。我想要一些類似以下的東西:
我想讓兩個子網域重定向到具有不同文件根的不同 https 網站。我們擁有的 ssl 憑證是網域層級的 (*example.com)。以下內容似乎不起作用,因為當我為每個連接埠放置多個虛擬主機時,我得到“此網頁不可用”。有什麼建議麼?
NameVirtualHost *:80
NameVirtualHost *:443
<VirtualHost *:80>
ServerName subdomain1.example.com
RedirectPermanent / https://subdomain1.example.com
</VirtualHost>
<VirtualHost *:80>
ServerName subdomain2.example.com
RedirectPermanent / https://subdomain2.example.com
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /srv/www/subd1/
ServerName subdomain1.example.com
# more directives
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /srv/www/subd2/
ServerName subdomain2.example.com
# more directives
</VirtualHost>
我們的 DNS 將 subdomain1.example.com 和 subdomain2.example.com 定向到我們的伺服器 IP 位址。
編輯:修正了範例配置中的錯誤(無 ServerName 指令)並新增了有關我們的 DNS 的資訊。
答案1
您的設定範例應該可以工作(假設您已正確設定與這些虛擬主機相對應的 DNS 項目以解析到有問題的伺服器),但您似乎沒有包含ServerName
指令 - 嘗試以下操作(假設這不是只是範例設定建置中的錯誤):
NameVirtualHost *:80
NameVirtualHost *:443
<VirtualHost *:80>
ServerName subdomain1.example.com
RedirectPermanent / https://subdomain1.example.com
</VirtualHost>
<VirtualHost *:80>
ServerName subdomain2.example.com
RedirectPermanent / https://subdomain2.example.com
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /srv/www/subd1/
ServerName subdomain1.example.com
# more directives
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /srv/www/subd2/
ServerName subdomain2.example.com
# more directives
</VirtualHost>