Вернуться   Форум об интернет-маркетинге > >
Ответ
 
Опции темы
Старый 06.01.2018, 17:15   #1
Студент
 
Регистрация: 15.11.2006
Сообщений: 46
Репутация: 1232

По умолчанию Как сделать параллельный редирект http с www на без www и https с www на без www

Всем привет. С наступившим Новым Годом и наступащим рождеством.
Подскажите пожалуйста, на время переезда с http на https по рекомендациям Яши возникла потребность сделать (на Opencart) два зеркала и соответственно нужно реализовать 2 параллельных 301 редиректа, чтобы на обоих протоколах работал

для http все страницы с www на без www
для https все страницы с www на без www

и чтобы они нормально существовали каждый в рамках своего протокола.
blaza вне форума   Ответить с цитированием

Реклама
Старый 07.01.2018, 08:30   #2
Charli
Аспирант
 
Регистрация: 26.12.2005
Сообщений: 225
Репутация: 11330

По умолчанию Re: Как сделать параллельный редирект http с www на без www и https с www на без www

Два редиректа
1 www на https без www
2 http на https

RewriteEngine On

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

RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]
Charli вне форума   Ответить с цитированием
Старый 07.01.2018, 10:10   #3
SeVlad
Guru-Editor
 
Регистрация: 03.11.2008
Адрес: Donbass
Сообщений: 18,062
Репутация: 1446633

По умолчанию Re: Как сделать параллельный редирект http с www на без www и https с www на без www

Цитата:
Сообщение от blaza Посмотреть сообщение
соответственно нужно реализовать 2 параллельных 301 редиректа, чтобы на обоих протоколах работал
Не два, а один. С www на без www
__________________
Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям.
Топики помощи с ⓌordPress и основы безопасности сайтов.
*** Помощь\консультации в топиках форума - БЕСПЛАТНО. Через личку - с бюджетом от 150$ ***
SeVlad вне форума   Ответить с цитированием
Старый 07.01.2018, 13:04   #4
miketomlin
Академик
 
Регистрация: 04.12.2013
Сообщений: 1,966
Репутация: 94776

По умолчанию Re: Как сделать параллельный редирект http с www на без www и https с www на без www

Charli, зачем делать два, когда можно один? См. флаг OR к условию. Над именем хоста в подстановке для универсальности можно поколдовать, либо прописать его явно.

---------- Добавлено 07.01.2018 в 15:09 ----------

Явно собирали по частям вашу солянку: ^(.*)$ vs ^/?(.*)
Выберите что-то одно, чтобы не привносить лишнюю энтропию
miketomlin вне форума   Ответить с цитированием
Старый 07.01.2018, 13:18   #5
Joker-jar
Егерь-старовер
 
Аватар для Joker-jar
 
Регистрация: 26.08.2010
Сообщений: 952
Репутация: 166476
Отправить сообщение для Joker-jar с помощью ICQ Send Message via Jabber to Joker-jar

По умолчанию Re: Как сделать параллельный редирект http с www на без www и https с www на без www

Для более корректной склейки желательно не перенаправлять запросы к robots.txt. Я предпочитаю использовать следующую конструкцию (Nginx):

Код:
server {
	listen		xx.xx.xx.xx;
	server_name	xx.xx.xx.xx domain.com www.domain.com;

	root		/var/www/domain.com/html;

	location / {
		if ( $uri !~ ^/robots\.txt ) {
			rewrite		^ https://domain.com$request_uri? permanent;
		}
	}
}

server {
	ssl_certificate ...;
	ssl_certificate_key ...;

	listen		xx.xx.xx.xx:443 ssl http2;
	server_name	xx.xx.xx.xx www.domain.com;

	root		/var/www/domain.com/html;

	location / {
		if ( $uri !~ ^/robots\.txt ) {
			rewrite		^ https://domain.com$request_uri? permanent;
		}
	}
}

server {
	ssl_certificate ...;
	ssl_certificate_key ...;

	listen		xx.xx.xx.xx:443 ssl http2;
	server_name	domain.com;

	root		/var/www/domain.com/html;
....
далее основные настройки
Первый блок перенаправляет запросы по HTTP с обращением по IP, по домену, по домену с www. Второй - по IP и по домену с www через HTTPS. Третий содержит уже настройки для сайта.
__________________
Оказываю услуги веб-программиста и администратора Linux. ICQ: 751355 | Jabber: jokerjar@jabber.ru | Skype: joker-jar
Joker-jar вне форума   Ответить с цитированием
Старый 08.01.2018, 00:49   #6
blaza
Студент
 
Регистрация: 15.11.2006
Сообщений: 46
Репутация: 1232

ТопикСтартер Re: Как сделать параллельный редирект http с www на без www и https с www на без www

Чего-то запутали совсем ))) что в итоге самое правильное ?
blaza вне форума   Ответить с цитированием
Старый 08.01.2018, 01:14   #7
miketomlin
Академик
 
Регистрация: 04.12.2013
Сообщений: 1,966
Репутация: 94776

По умолчанию Re: Как сделать параллельный редирект http с www на без www и https с www на без www

Делайте в точности, как сказали: две непересекающиеся версии редиректа с www на без www с сохранением тек. протокола. Исключение для роботс, как выше написали, думаю, не помешает, если сможете организовать отдачу отдельной версии файла для каждого протокола (с разным значением директивы Host).

---------- Добавлено 08.01.2018 в 03:21 ----------

Чтобы не париться с универсальностью, делается в лоб:
Код:
RewriteCond %{HTTPS} =on [NC]
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*) https://%1/$1 [R=301,L]
И рядом то же самое для HTTP.

---------- Добавлено 08.01.2018 в 03:25 ----------

К сожалению mod_rewrite не понимает абс. адрес без указания схемы (//...).
miketomlin вне форума   Ответить с цитированием
Старый 08.01.2018, 07:04   #8
WebAlt
**********
 
Аватар для WebAlt
 
Регистрация: 02.12.2007
Сообщений: 1,692
Репутация: 176373

По умолчанию Re: Как сделать параллельный редирект http с www на без www и https с www на без www




WebAlt вне форума   Ответить с цитированием
Старый 08.01.2018, 09:25   #9
богоносец
убивец демо†кратии
 
Аватар для богоносец
 
Регистрация: 30.01.2007
Адрес: совок_б/к
Сообщений: 9,752
Репутация: 1020602

По умолчанию Re: Как сделать параллельный редирект http с www на без www и https с www на без www

Цитата:
Сообщение от miketomlin Посмотреть сообщение
Исключение для роботс, как выше написали, думаю, не помешает, если сможете организовать отдачу отдельной версии файла для каждого протокола (с разным значением директивы Host).
Почему с разным Host?
И где ваше исключение для robots.txt?

Цитата:
Сообщение от blaza Посмотреть сообщение
что в итоге самое правильное ?
В стартовом посте задача сформулирована частично. Как будто вы не прочитали всех рекомендаций бота щукина о тормозном яндексе...

В итоге важны ответы сервера ... на ограниченное количество обращений, которыми бот всё же страдает.
богоносец вне форума   Ответить с цитированием
Старый 08.01.2018, 09:36   #10
SeVlad
Guru-Editor
 
Регистрация: 03.11.2008
Адрес: Donbass
Сообщений: 18,062
Репутация: 1446633

По умолчанию Re: Как сделать параллельный редирект http с www на без www и https с www на без www

Цитата:
Сообщение от miketomlin Посмотреть сообщение
две непересекающиеся версии редиректа с www на без www
Две не нужно:
Цитата:
Сообщение от blaza Посмотреть сообщение
чтобы на обоих протоколах работал
.
Цитата:
Сообщение от miketomlin Посмотреть сообщение
с разным значением директивы Hos
Вот этого как раз делать не нужно. Один роботс с одним Host

Цитата:
Сообщение от blaza Посмотреть сообщение
что в итоге самое правильное ?
Правильно - один редирект, убирающий www (а кстати, разве оперкарте это не движок делает?).

Но нужно определиться какой протокол основной и см картинку WebAlt-а.
SeVlad вне форума   Ответить с цитированием
Ответ

Метки
301 , https



Опции темы

Быстрый переход


Регистрация Справка Календарь Поддержка Все разделы прочитаны