@WebforSelf

Редирект в apache2?

Подскажите, имеется
Основной сайт
https://www.site.ru

Соостветственно нужно
1 - с www на без www
2 - и c http на https

в htaccess имею

RewriteCond %{REQUEST_URI} !(/$|\.)
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}/ [R=301,L]

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

RewriteCond %{HTTP_HOST} ^site\.ru
RewriteRule ^(.*)$ https://www.site.ru/$1 [R=permanent,L]

RewriteCond %{HTTP_HOST} ^www.site.ru\.index\.php?module=MainView&page_url=
RewriteRule ^(.*)$ https://www.site.ru/ [R=permanent,L]

624fc9c4a615a795757458.png

Откуда то берется 302 редирект.
И вот так
В общем при http возникает 302 редирект
624fc9dc3ddbc483381255.png
В итоге полез в конфиг апача
в default.conf
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
<VirtualHost *:80>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>

Есть такой редирект. Можно ли его убрать и настроить редирект только через htaccess? Как вообще правильно настроить редирект в апаче.
Пробовал такой вариант
RewriteEngine On
RewriteCond %{HTTP_HOST} ^сайт\.ru$ [NC]
RewriteRule ^(.*)$ https://www.сайт.ru/$1 [L,R=301]

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

Не решает проблему.
  • Вопрос задан
  • 301 просмотр
Решения вопроса 2
@dodo512
Откуда то берется 302 редирект.

В default.conf стоит такое
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Без явного указания флага R=301 код ответа будет 302.
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}  [L,R=301]
Или совсем убрать и настраивать редирект только через .htaccess
Ответ написан
Комментировать
@AlexVWill
Соостветственно нужно
1 - с www на без www

Перво-наперво проверь DNS записи регистратора. В них домен второго уровня
site.ru и субдомен (третьего уровня) www.site.ru должны быть с одним IP.
Затем в конфиге вируального хоста настрой
ServerName site.ru
ServerAlias www.site.ru

В принципе этого должно хватить, т.е. по обоим адресам будет открываться одно и тоже. Это не редирект пока, но будет открываться одна и та же страница.

Можно ли его убрать и настроить редирект только через htaccess

так делать не надо, правильным вариантом является правка конфига виртуального хостинга...

2 - и c http на https

для этого тебе нужно получить серитфикат SSL, например через Let's encrypt. Для этого есть такой инструмент - certbot, который получает сертификат и автоматом настраивает редиректы в конфигах апача.
Он добавляет виртуальный хост
<VirtualHost *:443>
- без этого редирект на HTTPS c HTTP работать не будет, и добавляет в раздел
<VirtualHost *:80>
правила редиректа
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.site.ru [OR]
RewriteCond %{SERVER_NAME} =site.ru
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

Для этого надо чтобы у апаче еще был включен плагин редиректа
sudo a2enmod rewrite
sudo service apache2 restart
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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