Задать вопрос

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

Вообщем сайт на вордпрессе, в хтассес сейчас стоит вот это
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress


Https загружается хорошо и http не очень. Думаю создать редирект на https чтоб народ с поисковиков сразу был там где надо. Пробовал разные варианты, но все создают циклическую переадресацию.

Вообщем накиньте примерный код. Заранее благодарю.
  • Вопрос задан
  • 191997 просмотров
Подписаться 17 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 19
@Geograph
https://www.reg.ru/support/hosting-i-servery/sajty...

Вариант 1
RewriteEngine On
RewriteCond %{HTTPS} =off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]


Вариант 2
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]


если оба первых варианта не помогли и возникает циклическая переадресация:

Вариант 3
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Ответ написан
@spieldy
вот еще вариант
RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Ответ написан
Кому ВООБЩЕ ничего не помогло, как мне.

Вот этот сайт online-generators.ru подключён к CloudFlare. С ним-то и были проблемы.

Решилось так: заходим в аккаунт CloudFlare в раздел Page Rules. Там выставляем правило все страницы сайта перенаправлять на безопасный протокол.
Ответ написан
OAPrilepa
@OAPrilepa
Frontend developer
RewriteCond %{HTTP:X-HTTPS} !1
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Ответ написан
Комментировать
@romasport
masterhost
RewriteCond %{HTTP:PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R]
Ответ написан
@IceJOKER
Web/Android developer
https://www.sslshopper.com/apache-redirect-http-to...

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Ответ написан
Boydzila
@Boydzila
Web Developer
Хостинг active.by (если кому пригодится):
RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Ответ написан
@tarasui
для хостинга hts.ru

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-SSL} !^yes$
RewriteRule (.*) https://gu77.ru/$1 [R=301,L]
</IfModule>
Ответ написан
Для хостинга Джино
RewriteEngine On  # Если этой строки нет выше
RewriteCond %{HTTP:X-Forwarded-Protocol} !=https
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Ответ написан
OAPrilepa
@OAPrilepa
Frontend developer
С использованием бесплатного Let's Encrypt SSL сертификата правило в итоге должно выглядеть так:
# SSL
  RewriteCond %{REQUEST_FILENAME} !^/\.well-known(.*)$
  RewriteCond %{HTTP:X-HTTPS} !1
  RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Ответ написан
Комментировать
@Dron84
Мне помог такой вариант

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{HTTPS} off
  RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]
  RewriteRule ^index\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.html [L]
</IfModule>


Но это для SPA Но как по мне тебе должен помочь вариант

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Ответ написан
Комментировать
CB9TOIIIA
@CB9TOIIIA
Joomla разработчик
Мне помогло так:
RewriteEngine On
RewriteCond %{HTTP:SSL} !1
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L,R=301]
Ответ написан
Andrews32
@Andrews32
Для статичного/самописного сайта на PHP (не Wordpress) на хостинге Timeweb мне помог код:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^site.ru[nc]
RewriteRule ^(.*)$ https://site.ru/$1 [r=301,nc]
# или RewriteRule ^(.*)$ https://www.site.ru/$1 [r=301,nc] если нужно с www
Ответ написан
So1omon
@So1omon
Родился. Тусуюсь. Все ок.
Вот рабочий вариант
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

НО, чтобы все работало необходимо вставить этот код в самый верх файла .htaccess
Ответ написан
Комментировать
@Niku0201
В последствии добавлении такого кода в .htaccess может возникнуть такая проблема:
"сайт *название.сайта* выполнил переадресацию слишком много раз."

Что бы этого избежать надо добавить не в .htaccess а в wp-config следующее:

define('FORCE_SSL_ADMIN', true);
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') 
$_SERVER['HTTPS']='on';


Лично мне это помогло и теперь и сайт открывается как надо и перенаправление идёт с http на https без проблем и ошибок.
Успехов господа.
Ответ написан
re1mond
@re1mond
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Protocol} !=https
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Ответ написан
Комментировать
Comers
@Comers
Frontend Dev.
Ничего не подошло
Ответ написан
vovka3003
@vovka3003
Фрилансер. Инженер систем безопасности.
Временно кинул новый движок в папку ниже корня старого сайта и помог только "Вариант 3" от Geograph (остальные кидали в корень).
Благодарствую))
Ответ написан
Комментировать
Drake4ree
@Drake4ree
Делаю сложные вещи простыми и понятными
Для reg.ru рабочий вариант на 2020-06-12
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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