Я настроил сервер Apache на моем компьютере Ubuntu 18.04 с поддержкой HTTPS.
У меня есть сертификат SSL для * .example.com, поэтому в моем решении, например, используется HTTPS. com должен был перенаправить его на 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, поэтому скажите, пожалуйста, Я использую неправильный синтаксис
Так как я использую Let's Encrypt через https://sslforfree.com , я поигрался и решил, что могу сгенерировать один сертификат SSL для * .example.com и example.com, что исключило необходимость перенаправления на www. :)
Введите *. Example.com example.com
в строку поиска на веб-сайте
Here's how I do it, but I don't use a .htaccess
file - I put it directly into the Apache VirtualHost config - Note that I'm on Debian systems, and they take a different path to configuration with the *-available vs *-enabled directories, and main global server config elsewhere...
<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>