Задать вопрос
@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]

Не решает проблему.
  • Вопрос задан
  • 432 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 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
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы