Проблема с редиректом с http на https через htaccess

MBodunov

Новичок
Добрый день
На самописном движке возникла задача перети на https. Что бы не потерять в поиске пытаюсь настраивать редирект в htaccess
Пытался сделать двумя вариантами, но результат один:
Если заходить сразу по https то открывается нормально всё, но если зайти через http вместо редиректа открывается
страница
с ошибкой... попробывал два варианта, но ничего не срабатывает
Apache:
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /  

    ############################################################################
    #### Убираем повторяющиеся слеши (/) в URL                              ####
    ############################################################################
    RewriteCond %{REQUEST_URI} ^(.*)/{2,}(.*)$
                #Проверяем, повторяется ли слеш (//) более двух раз.
    RewriteRule . %1/%2 [R=301,L]
                #Исключаем все лишние слеши.
#    Вариант 1
#RewriteEngine On
#RewriteCond %{HTTPS} !=on
#RewriteCond %{HTTP_HOST} ^www.test.local-host\/$1.ru [NC]
#RewriteRule ^(.*)$ https://test.local-host/$1 [R=301]
#RewriteCond %{HTTPS} !=on
#RewriteRule ^(.*)$ https://test.local-host/$1 [R=301]

#    Вариант 2
#RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301]
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}


  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-s
  RewriteCond %{REQUEST_FILENAME} !-l
  RewriteRule ^(.+)$ /index.php?%{QUERY_STRING} [L]
  # RewriteRule ^(.+)$ /errdoc.php?%{QUERY_STRING} [L]
</IfModule>
 
Последнее редактирование:

atainex

некромант
Что за ошибка вылезает? Множественная переадресация?
 

atainex

некромант
Если да, то попробуй добавить между RewriteCond %{HTTPS} off и RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Вот это RewriteCond %{HTTP:X-Forwarded-Proto} !https
 

Тугай

Новичок
%{REQUEST_URI} - нет GET параметров
такое
Код:
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
их отрезает.

должно быть как в варианте 1.
Код:
# redirect http to https
RewriteCond %{HTTPS} off
RewriteRule ^/?(.*) https://my.site/$1 [R=301,L]
 

ksnk

прохожий
Это на каком то хостинге ? Они обычно сами на сайте указывают что нужно написать в htaccess для перехода. Вот, для примера - список с подсказками - их бывает много и разных...
 

ksnk

прохожий
Навскидку - у правила
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
должны быть суффиксы - [R=301,L]
 

MBodunov

Новичок
%{REQUEST_URI} - нет GET параметров
такое
Код:
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
их отрезает.

должно быть как в варианте 1.
Код:
# redirect http to https
RewriteCond %{HTTPS} off
RewriteRule ^/?(.*) https://my.site/$1 [R=301,L]
Спасибо заработало....
С уважением я
 

AnrDaemon

Продвинутый новичок
Потому что не надо использовать для этого .htaccess

Код:
<VirtualHost *:80>
ServerName xxx
Redirect permanent / https://xxx/
</VirtualHost>
Всё.
 
Сверху