Перенаправление на https

kakbeololo

Проверенные
Сообщения
71
Реакции
24
Баллы
8,105
Подключил себе ssl сертификат и нужно что бы на https переходило, а я в этом не очень разбираюсь.

Сейчас стоит переадресация с домена на ввв.домен.ру:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^134\.0\.112\.106
RewriteRule (.*) [R=301,L]

RewriteCond %{HTTP_HOST} ^market4game\.ru$ [NC]
RewriteRule ^(.*)$ [R=301,L]

Подскажите что надо добавить или изменить что бы при заходе на сайт был https
 
Или так
Код:
RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301]
Или Сяк
Код:
RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301]

А вообще есть на форуме тема по https надо там страшивать
 
Или так
Код:
RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301]
Или Сяк
Код:
RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301]

А вообще есть на форуме тема по https надо там страшивать
Как сделать https без www???
 
Код:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*) https://%1/$1 [R=301,L]

Это решение фиговое...
1. Это создаёт 1 лишнее перенаправление + 1 лишнее рерайт-правило для обработки по ВСЕМ запросам к серверу = существеное уменьшение производительности!
2. Не всегда передаются данные из URL вида .php?access=true&file=.... в deferred-запросах (а-ля крон форума, фоновые задачи), что может привести к некорректной работе и вообще непредвиденным последствиям (ошибке данных БД, например...).
Не делайте так!

Я давненько поднимала остро этот вопрос, на форуме буржуйском мы обсуждали.
Стояла задача оптимального редиректа без www на https.
Общими усилиями получили вот такое, что работает у меня по сей день!
Делюсь:

В корневом файле .htaccess делаем следующее:
под :
Код:
#  RewriteBase
!!!!! Параметр RewriteBase должен быть отключен (перед RewriteBase должен стоять значек #) для работы редиректа на любой конфигурации (для любого домена)!
над:
Код:
#This line may be needed to enable WebDAV editing with PHP as a CGI.
#RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
вставляем:
Код:
RewriteCond %{HTTP_HOST} ^(www\.)(.+) [OR]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(www\.)?(.+)
RewriteRule ^ https://%2%{REQUEST_URI} [R=301,L]

Один запрос и все параметры из URL на месте. Пользуйтесь на здоровье!
 
Последнее редактирование:
Есть такой вариант для nginx, на сервере http
Код:
 return 301 https://hostname$request_uri;

На сервере https:
Код:
 if ($host != hostname) {
            rewrite ^(.*) https://hostname$request_uri? permanent;
   }
 
Есть такой вариант для nginx, на сервере http
Код:
 return 301 https://hostname$request_uri;

На сервере https:
Код:
 if ($host != hostname) {
            rewrite ^(.*) https://hostname$request_uri? permanent;
   }

А если для любого адреса? Есть такой вариант?
 
А если для любого адреса? Есть такой вариант?
Как пример с http
Код:
return 301 https://$host$request_uri;
Еще в server_name можно использовать регулярки, но это уже плохой тон
Код:
server {
         listen x.x.x.x;
         listen x.x.x.x ssl;
/*
тут сертификаты и блаблабла
*/
         server_name "~^www\.(.*)$" ;
         return 301 https://$1$request_uri ;
}

Мой вариант удобней, он завернет любой невалидный hostname.
 
Последнее редактирование:
Но мой вариант удобней, он завернет любой невалидный hostname

Я поняла... всё равно, мне не подойдёт :(

У меня несколько десятков абсолютно разных доменов и у каждого - свой vhostы, но у всех одинаковый docroot!
Разные vhostы - обязательное условие, ServerAlias не подходит из-за принципа работы системы :(

Т.е мне необходимо правило без прямой прописи домена, с динамической переменной конечного $host!
Что-то вроде такого: получаем запрашиваемый хост ---> проверяем на www. и/или http ---> перенаправляем на полученный хост.

Вот такое бы запилить...
 
с динамической переменной конечного $host!
, в частности, оптимизация.
В первую очередь имя ищется в хэш-таблице точных имён. Если имя не было найдено, то имя ищется в хэш-таблице имён с масками, начинающихся со звёздочки. Если и там поиск не дал результата, то имя ищется в хэш-таблице имён с масками, оканчивающихся на звёздочку.

Поиск в хэш-таблице имён с масками медленнее, чем поиск в хэш-таблице точных имён, поскольку имена сравниваются по доменным частям. Заметьте, что специальное имя с маской вида “.example.org” хранится в хэш-таблице имён с масками, а не в хэш-таблице точных имён.

Регулярные выражения проверяются последовательно, а значит являются самым медленным и плохо масштабируемым методом.
Поэтому правильней делать дефолт сервер, все принимать и все заворачивать на https, тут можно использовать переменную $host - от этого производительность не пострадает от слова совсем; а в виртхостах уже работать хоть на условиях, хоть через maps (с условиями проще, если все это дело генерируется скриптом по шаблону виртхоста).
 
Поэтому правильней делать дефолт сервер, все принимать и все заворачивать на https, тут можно использовать переменную $host - от этого производительность не пострадает от слова совсем; а в виртхостах уже работать хоть на условиях, хоть через maps (с условиями проще, если все это дело генерируется скриптом по шаблону виртхоста).

Спасибо за информацию!
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу