Apache-2.4
Apache mod_rewrite 出於某種原因將我重定向到 https://www.(字面意思)
我在我的 Ubuntu 18.04 電腦上配置了一個支持 HTTPS 的 Apache 伺服器。
我有一個 *.example.com 的 SSL 證書,所以我在 example.com 上使用 HTTPS 的解決方案是將其重定向到 www,然後將所有子域重定向到 HTTPS。
這是我的 HTTP 版本重定向配置:
RewriteEngine On RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^/?(.*) http://www.%{SERVER_NAME}/$1 [R,L] RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
我試過
%{SERVER_NAME}
用%{HTTP_HOST}
我還多次重新啟動 apache2 並嘗試清除瀏覽器的記憶體,但它一直重定向到https://www。
PS 我不是 Apache 專家,所以請告訴我我是否使用了錯誤的語法
由於我通過https://sslforfree.com使用 Let’s Encrypt,我在那裡玩過,我想我可以為 *.example.com 和 example.com 生成一個 SSL 證書,從而消除了重定向到 www 的需要。:)
*.example.com example.com
在網站的搜尋欄中輸入
這是我的做法,但我不使用
.htaccess
文件 - 我將它直接放入 Apache VirtualHost 配置 - 請注意,我使用的是 Debian 系統,它們使用 *-available 與 *- 採用不同的配置路徑啟用的目錄,以及其他地方的主要全域伺服器配置……<VirtualHost 10.0.2.15:80> ServerName example.com ServerAlias www.example.com RewriteEngine on RewriteRule ^/(.*)$ https://www.example.com/$1 [R,L] </VirtualHost> <VirtualHost 10.0.2.15:443> ServerName example.com ServerAlias www.example.com ServerAdmin webmaster@example.com SSLEngine on SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown CustomLog ${APACHE_LOG_DIR}/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" DocumentRoot /var/www-example.com <directory /var/www-example.com> Options All AllowOverride All Require all granted </directory> ErrorLog ${APACHE_LOG_DIR}/ssl-example.com-error.log CustomLog ${APACHE_LOG_DIR}/ssl-example.com-access.log combined </VirtualHost>