如何將請求重新導向至https://blog.example.com到https://example.com/blog?
閱讀有關何時不使用重寫模式的 apache 文檔,我嘗試了一個簡單的重定向,例如
Redirect https://blog.example.com https://example.com/blog
但當我訪問時https://blog.example.com,它不會重定向我。只說證書錯誤。是否有可能重定向 HTTPS 子網域?當我使用這樣的東西時,它與 HTTP 一起工作正常:
<VirtualHost *:80>
ServerName blog.example.com
Redirect / https://example.com/blog/
</VirtualHost>
像這樣的條件:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^([^\.]+)\.example\.com$
RewriteRule ^/(.*)$ https://example.com/%1/$1 [R=301,L]
僅在使用 HTTP 而不是 HTTPS 時有效...
謝謝。
答案1
您的配置適用於VirtualHost *:80
,換句話說,適用於http
連接埠。連接埠https
是 443。
答案2
我認為你可以使用 mod_alias 來實現這一點。
在您的 blog.example.com 虛擬主機中:
RedirectMatch (.*)$ / https://example.com/blog/$1
答案3
如果瀏覽器標記憑證錯誤,則會中斷交易前重定向觸發。如果您不使用 HSTS,您將能夠透過點擊錯誤來確認這一點,並且重新導向將照常繼續。錯誤本身可能由多種原因引起,瀏覽器會告訴您哪一個適用,但最有可能的是您的憑證僅對(或通配符)有效example.com
且沒有 SAN 條目。要解決此問題,您可以重新產生憑證以包含此附加名稱,或者您可以獲得額外的憑證並調整您的伺服器設定以為子網域提供該憑證- 無論哪種情況,您選擇的憑證提供者(CA)都應該能夠來幫你。blog.example.com
*.example.com