Apache-2.4

Apache mod_rewrite 出於某種原因將我重定向到 https://www.(字面意思)

  • August 1, 2018

我在我的 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>

引用自:https://serverfault.com/questions/924026