@notmvp

Как настроить редирект на https?

У меня есть проект на PHP (yii2). Была задача сделать редирект с http на https для всех страниц. Я добавил в файл .htaccess в корне проекта следующие строки:

# redirect to https
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# redirect the main page to https
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]


Теперь редирект работает для всех страниц, за исключением файлов. Т.е. есть файлы, которые лежат на сервере и доступ к ним можно получить так (пример):

mysite.ru/files/file.pdf
mysite.ru/files/pdf/file1.pdf
mysite.ru/files/pdf/file2.pdf
...

По этим ссылкам редиректа не происходит. ChatGPT подсказал добавить правило:
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^files/ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

но оно не работает. По https при этом перейти ко всем файлам могу.

Как решить проблему?
  • Вопрос задан
  • 108 просмотров
Пригласить эксперта
Ответы на вопрос 3
@dodo512
Если на хостинге используется связка Nginx + Apache, где Nginx самостоятельно раздаёт статические файлы и не проксирует такие запросы на Apache, то никакие правила в .htaccess тут не помогут.
В панели управления хостингом поищите настройки для редиректа на https.
Ответ написан
Комментировать
@pantsarny
RewriteEngine On

RewriteCond %{HTTP_HOST} ^yourdomain1.com [NC]

RewriteCond %{HTTPS} off

RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Ответ написан
tomclancys
@tomclancys
Заменить ваш код на этот:
# Переадресация с HTTP на HTTPS
RewriteCond %{HTTP:X-HTTPS} !1
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
# /Переадресация с HTTP на HTTPS
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы