Ssl
使用 SSL VirtualHost 設置強制 www 前綴
執行 Apache/2.4.7。
我似乎在
www
為我的一個 SSL 域強制使用前綴時遇到了一些麻煩。以下模式應重定向到:
https://www.foo.com
foo.com
www.foo.com
http://foo.com
http://www.foo.com
https://foo.com
值得一提的是,我還想保留任何可能已請求的 URI,例如。
foo.com/bar
=>https://www.foo.com/bar
foo.com.conf
所以這是我文件中相關的目前程式碼。<VirtualHost *:80> ServerName foo.com ServerAlias *.foo.com RedirectMatch permanent ^/(.*) https://www.foo.com/$1 </VirtualHost> <VirtualHost *:443> ServerName foo.com ServerAlias *.foo.com </VirtualHost>
我會很感激這裡的一些指導。
Jonah 的程式碼片段執行良好,但我最終使用了mod_macro來避免重複程式碼。
<Macro ServerAliasesRedirect> ServerAlias foo.com ServerAlias *.foo.com RedirectMatch permanent ^/(.*) https://www.foo.com/$1 </Macro> <Macro SSL> SSLEngine on SSLCertificateFile /etc/apache2/ssl/foo.com.crt SSLCertificateKeyFile /etc/apache2/ssl/foo.com.key SSLCertificateChainFile /etc/apache2/ssl/foo.com.ca-bundle </Macro> <VirtualHost *:80> Use ServerAliasesRedirect </VirtualHost> <VirtualHost *:443> Use SSL ServerName www.foo.com # ...directory stuff and so on... </VirtualHost> <VirtualHost *:443> Use SSL Use ServerAliasesRedirect </VirtualHost>
擺脫
ServerName
埠 80 和埠 443 虛擬主機中的指令。將與埠 80 虛擬主機中類似的重定向匹配指令添加到埠 443 虛擬主機。
使用另一個埠 443 虛擬主機
ServerName www.foo.com
確保此虛擬主機出現並在其他埠 443 虛擬主機之前進行處理。
這個虛擬主機是使用者被重定向後登陸的地方。所以把其他合適的配置放在這裡。
例子:
<VirtualHost *:80> ServerAlias foo.com ServerAlias *.foo.com RedirectMatch permanent ^/(.*) https://www.foo.com/$1 </VirtualHost> <VirtualHost *:443> ServerName www.foo.com # various directives as appropriate for live service to users # important to place this before the wildcard VirtualHost below # which will match all subdomains # not matched by a preceding VirtualHost </VirtualHost> <VirtualHost *:443> ServerAlias foo.com ServerAlias *.foo.com RedirectMatch permanent ^/(.*) https://www.foo.com/$1 </VirtualHost>