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

12
богоносец
На сайте с 30.01.2007
Offline
754
#11
miketomlin:
Да, с двумя роботс я, видимо, погорячился.

С двумя Host:

Хотя Яндексу она не нужна

http://yandex.ru/robots.txt 200 OK

https://yandex.ru/robots.txt 200 OK

http://www.yandex.ru/robots.txt 200 OK

https://www.yandex.ru/robots.txt 200 OK

И по всем протоколам.субдоменам Яндексу надо правильную Host:

А с /index.php табличка зеркал трёхмерной получится... и это не предел.

https://www.google.ru/robots.txt 200 OK

http://www.google.ru/robots.txt 200 OK

http://google.ru/robots.txt 301 Location: https://www.google.ru/robots.txt

https://google.ru/robots.txt 301 Location: https://www.google.ru/robots.txt

Не чтут бота щукина!

http://www.google.ru//robots.txt 200 OK

http://www.google.ru//robots.txt?идиоты 200 OK

B
На сайте с 14.11.2006
Offline
86
#12
miketomlin:
Делайте в точности, как сказали: две непересекающиеся версии редиректа с 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 не понимает абс. адрес без указания схемы (//...).

Правильно я понял, вот так:

RewriteCond %{HTTPS} =on [NC]

RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]

RewriteRule ^(.*) https://%1/$1 [R=301,L]

RewriteCond %{HTTP} =on [NC]

RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]

RewriteRule ^(.*) http://%1/$1 [R=301,L]

- Интернет-Магазин штатных автомагнитол на Android (http://www.android-car.ru) - On-line журнал об автомобильной электронике, навигации и мультимедиа системах (http://www.navi-blog.ru)
M
На сайте с 04.12.2013
Offline
223
#13

Нет такой переменной (см. http://u75.ru/rewritecond ). Меняйте значение (off) или используйте условие от противного, как ранее в теме уже показывали.

Домены и скрипт для коротких ссылок: https://u75.ru/domains-for-shortcuts
B
На сайте с 14.11.2006
Offline
86
#14
miketomlin:
Нет такой переменной (см. http://u75.ru/rewritecond ). Меняйте значение (off) или используйте условие от противного, как ранее в теме уже показывали.

Я не спец в редиректах, поэтому и обратился сюда.

Я правильно вас понял, вот так нужно:

RewriteCond %{HTTPS} =on [NC]

RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]

RewriteRule ^(.*) https://%1/$1 [R=301,L]

RewriteCond %{HTTPS} =off [NC]

RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]

RewriteRule ^(.*) http://%1/$1 [R=301,L]

S
На сайте с 30.09.2016
Offline
469
#15

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

RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
Но это если на сервере есть переменная HTTPS
Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
M
На сайте с 04.12.2013
Offline
223
#16
blaza:
Я не спец в редиректах, поэтому и обратился сюда.
Я правильно вас понял, вот так нужно

Да, как вариант.

Сюда не обращаются, здесь общаются все желающие :)

---------- Добавлено 10.01.2018 в 15:08 ----------

P.S. RewriteEngine не забудьте включить отдельной директивой.

B
На сайте с 14.11.2006
Offline
86
#17
miketomlin:
Да, как вариант.

Сюда не обращаются, здесь общаются все желающие :)

P.S. RewriteEngine не забудьте включить отдельной директивой.

Спасибо за общение и помощь )))

Всё работает, как надо.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий