Реклама на сайте Advertise with us

Убрать двойной редирект

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:



С нами с 13.12.13
Сообщения: 85
Рейтинг: -40

Ссылка на сообщениеДобавлено: 09/08/17 в 23:46       Ответить с цитатойцитата 

Привет всем.
Задал один вопрос тут и вариантов никто не смог предложить.

Надеюсь тут еще есть специалисты и кто-нибудь подскажет:

Есть домен.ком с сертификатом.
Нужно сделать редиректы:
1) с www_домен_ком на https://домен.ком
2) с https://www_домен_ком на https://домен_ком
3) с домен.ком на https://домен.ком

Делаю первые два и все ОК
А третий вариант гугл подсказывает только методом включения https, НО
тогда появляется двойной редирект для 2-го варианта: с www идет на https://www и потом второй редирект на https://домен.ком

Есть работающий вариант для всех 3 правил перенаправлений без двойного редиректа?

0
 



С нами с 11.12.11
Сообщения: 351
Рейтинг: 737

Ссылка на сообщениеДобавлено: 10/08/17 в 02:12       Ответить с цитатойцитата 

Навскидку,

Делаем два виртуалхоста

Первый без SSL

Код:
<VirtualHost 172.20.30.40:80>
ServerName domain.com
ServerAlias www .domain.com
RewriteRule ^(.*)$ https://domain.com/$1 [R=301,L]
</VirtualHost>


Втрой с SSL

Код:
<VirtualHost 172.20.30.40:443>
ServerName domain.com
ServerAlias www .domain.com
SSLEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

DocumentRoot "/www/domain/https/..."
и тд
</VirtualHost>



ServerAlias www .domain.com - пробел тут убрать надо естественно, просто форум вырезает тогда.

Не соображу где тут могут быть два редиректа?

4
 



С нами с 13.12.13
Сообщения: 85
Рейтинг: -40

Ссылка на сообщениеДобавлено: 10/08/17 в 14:47       Ответить с цитатойцитата 

Вставил Ваше предложение в VirtualHost (с изменениями)
Действительно не стало двойного редиректа. Спасибо.
Возникли только другие неприятные мелочи:

<VirtualHost 172.20.30.40:80>
RewriteRule ^(.*)$ https://domain.com/$1 [R=301,L]

такая конструкция не работает для редиректа
3) с домен.ком на https://домен.ком

или появляется неприятный момент: Location: https://domain.com//
с двумя слэшами на конце(
пришлось делать:
RewriteCond %{SERVER_NAME} =domain.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L,NE,R=permanent]

Но и это не по перфекционисткиicon_smile.gif
хоть в конфиге апача и стоит дефолтный UTF-8, но видимо обрабатывается все ранее и отдается по первому языку-en:
Content-Type: text/html; charset=iso-8859-1

Хотя все идеально для 443 - и домен и 1 редирект и charset=UTF-8:
<VirtualHost 172.20.30.40:443>
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

HTTP/1.1 301 Moved Permanently
Server: Apache
Location: https://domain.com/
Content-Type: text/html; charset=UTF-8

Получается если сделать рабочей конструкцию для 80 от 443:
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
то все заработает идеально, но пока что никак не выходит каменный цветок

1
 



С нами с 11.12.11
Сообщения: 351
Рейтинг: 737

Ссылка на сообщениеДобавлено: 11/08/17 в 03:35       Ответить с цитатойцитата 

Какая разница какой там charset у редиректа?, если отдаётся просто заголовок Location: с урлом, и тела ответа нет.

Ну а дальше мне тяжело понять Ваш поток мыслей.
Что работает, а что нет?

1
 



С нами с 09.08.12
Сообщения: 185
Рейтинг: 378

Ссылка на сообщениеДобавлено: 11/08/17 в 08:18       Ответить с цитатойцитата 

truethen писал:
Привет всем.
Задал один вопрос тут и вариантов никто не смог предложить.

Надеюсь тут еще есть специалисты и кто-нибудь подскажет:

Есть домен.ком с сертификатом.
Нужно сделать редиректы:
1) с www_домен_ком на https://домен.ком
2) с https://www_домен_ком на https://домен_ком
3) с домен.ком на https://домен.ком

Делаю первые два и все ОК
А третий вариант гугл подсказывает только методом включения https, НО
тогда появляется двойной редирект для 2-го варианта: с www идет на https://www и потом второй редирект на https://домен.ком

Есть работающий вариант для всех 3 правил перенаправлений без двойного редиректа?


есть lua поддержка в apache nginx или js
написать логику на нем где будет проверятся все три или больше условий сразу
и делать только 1 редирект что мешает?
в крайнем случае всегда можно сделать редирект на уровне веб приложения (php и т.п) - как обчно и делают.

1
 

127.0.0.1

С нами с 26.04.06
Сообщения: 1092
Рейтинг: 557

Ссылка на сообщениеДобавлено: 11/08/17 в 17:48       Ответить с цитатойцитата 

редирект нужен для апача или нгинкс?

0
 



С нами с 13.12.13
Сообщения: 85
Рейтинг: -40

Ссылка на сообщениеДобавлено: 23/09/17 в 12:47       Ответить с цитатойцитата 

Оффтопик: Сорри, не включил напоминалку о получении ответов
завел в вхост апача так и все отлично работает:

Код:
RewriteCond %{SERVER_NAME} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://domen.com$1 [L,NE,R=permanent]
RewriteCond %{SERVER_NAME} =domen.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L,NE,R=permanent]
RewriteCond %{SERVER_NAME} ^XX\.XX\.XX\.XX$
RewriteRule ^(.*)$ https://domen.com$1 [L,NE,R=permanent]


А так как изначально ступил и не завел сертификат для www, то пришлось еще дописать:
Код:
RewriteCond %{HTTP_HOST} ^https://www.domen.com$ [NC]
RewriteRule ^(.*)$ https://domen.com$1 [R=301,L]


Mad писал:
Не соображу где тут могут быть два редиректа?

вот так делают не подумав и вот Вам куча редиректов)))
сплошное наебалово

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »