Принудительно SSL не работает с .htaccess

Я пробовал все перечисленное в моем файле .htaccess.

#RewriteEngine On
#RewriteCond %{HTTPS} off
#RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

#RewriteEngine On
#RewriteCond %{SERVER_PORT} !443
#RewriteRule ^(/(.*))?$ https://%{HTTP_HOST}/$1 [R=301,L]

#RewriteEngine On
#RewriteCond %{HTTPS} off
#RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

RewriteEngine On

# If we receive a forwarded http request from a proxy...
RewriteCond %{HTTP:X-Forwarded-Proto} =http [OR]

# ...or just a plain old http request directly from the client
RewriteCond %{HTTP:X-Forwarded-Proto}  = ""
RewriteCond %{HTTPS} !=on

# Redirect to https version
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

У меня есть два виртуальных хоста на этом сервере, и, похоже, ни один из них не работает. У меня есть возможность перезаписи мода в файле httpd.conf. Любые идеи?

Если можете, поместите свою конфигурацию в главный файл Apache (или включенный оттуда) вместо .htaccess. Вы получите большую безопасность, большую простоту и лучшую производительность.

Patrick Mevzek 22.05.2018 01:19

Возможно, ваш хост запускает apache вместе с nginx, поэтому ваш .htaccess игнорируется для определенных файлов?

Herbert Van-Vliet 03.02.2021 20:27
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
2
251
1

Ответы 1

Использование mod_rewrite для перенаправления HTTP на HTTPS не рекомендуется. Вместо этого вы должны использовать RedirectSSL в конфигурации вашего виртуального хоста.

Пример:

<VirtualHost *:80>
   ServerName example.com
   Redirect / https://example.com/
</VirtualHost>

<VirtualHost _default_:443>
    ServerName example.com

    # server settings e.g ProxyPass or DocumentRoot

    SSLEngine On
    # other ssl settings
</VirtualHost>

Другие вопросы по теме