Помогите с редиректами в htaccess

C
На сайте с 09.03.2021
Offline
7
475

ребята, помогите правильно настроить редиректы  в htaccess 

Ситуация:

Мультимагазин 1 основной домейн и 3 аллиаса.

В результате надо чтобы были адреса с https без www

Сейчас у меня так, но все равно дубли ...

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.magazin111\.ru [NC]

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


RewriteCond %{HTTP_HOST} ^www\.magazin222 \.ru [NC]

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


RewriteCond %{HTTP_HOST} ^www\.magazin333 \.ru [NC]

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


RewriteCond %{HTTP_HOST} ^www\.magazin444 \.ru [NC]

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

RewriteBase /


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

E
На сайте с 01.10.2017
Offline
116
#1
Cutegi :
Сейчас у меня так, но все равно дубли ...

Какие дубли? С http (без s)?

В остальном все правильно, кроме того что это можно сделать одним общим или частным правилом и что при использовании частных правил в конце регулярного выражения для имени хоста лучше поставить знак доллара. Также лучше это делать в рамках специального хоста, а не основного.

NC в RewriteRule не нужен.

Домены на продажу: https://p20.ru/collection/domains-for-sale
W1
На сайте с 22.01.2021
Offline
306
#2
Cutegi :
Помогите пожалуйста настроить верно

Зависит от сервера. Если я правильно понял насчёт дублей.

Мой форум - https://webinfo.guru –Там я всегда на связи
C
На сайте с 09.03.2021
Offline
7
#3
estic #:

Какие дубли? С http (без s)?

В остальном все правильно, кроме того что это можно сделать одним общим или частным правилом и что при использовании частных правил в конце регулярного выражения для имени хоста лучше поставить знак доллара. Также лучше это делать в рамках специального хоста, а не основного.

NC в RewriteRule не нужен.


Что набираю.    >     что плохо получаю:

http://magazin.ru/            http://magazin.ru/

https://www. magazin.ru /             https://www. magazin.ru  

C
На сайте с 09.03.2021
Offline
7
#4
estic #:

Какие дубли? С http (без s)?

В остальном все правильно, кроме того что это можно сделать одним общим или частным правилом и что при использовании частных правил в конце регулярного выражения для имени хоста лучше поставить знак доллара. Также лучше это делать в рамках специального хоста, а не основного.

NC в RewriteRule не нужен.

Может можете конкретно в примере показать как это "в рамках специального хоста" ...  (если бы я знал что это значит, я бы не просил:)))

Буду очень благодарен Вам.

C
На сайте с 09.03.2021
Offline
7
#5

ОГРОМНОЕ СПАСИБО ЗА РЕШЕНИЕ ЗАДАЧИ .. ЧЕЛОВЕКУ С НИКОМ "DOTROX" (на других ресурсах)

Если у кого похожая проблема с редиректами, выкладываю решение которое мне помогло:

# Редирект для удаления www (сразу на https)
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

# Редирект на https (если под первый редирект адрес не попал)
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
W1
На сайте с 22.01.2021
Offline
306
#6
Зависит от сервера.
fliger
На сайте с 17.09.2015
Offline
114
#7
Cutegi #:

ОГРОМНОЕ СПАСИБО ЗА РЕШЕНИЕ ЗАДАЧИ .. ЧЕЛОВЕКУ С НИКОМ "DOTROX" (на других ресурсах)

Если у кого похожая проблема с редиректами, выкладываю решение которое мне помогло:

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

# Вместо захватывания маски в RewriteRule используйте переменную %{REQUEST_URI}
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(?>.*)$ https://%1%{REQUEST_URI} [L,R=301,L]

# Здесь набор условий RewriteCond, как выше уже указали, зависит от хостера. Для Джино, например, так:
RewriteCond %{HTTP:X-Forwarded-Protocol} !=https
RewriteRule ^(?>.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]

В RewriteRule указывайте незахватывающую маску для всей строки. В адресе для перенаправления лучше использовать %{SERVER_NAME}, а не %{HTTP_HOST}.
E
На сайте с 01.10.2017
Offline
116
#8
fliger #:
Вместо захватывания маски в RewriteRule используйте переменную %{REQUEST_URI}

Чем это лучше?

fliger #:
%{SERVER_NAME}
Будет ли сюда подставляться имя хоста из запроса, если автор использует один виртуальный хост с алиасами?
fliger
На сайте с 17.09.2015
Offline
114
#9
estic #:

Чем это лучше?

Будет ли сюда подставляться имя хоста из запроса, если автор использует один виртуальный хост с алиасами?

1. Хоть и на спичках, но экономия.

2. Не заметил, что у него "1 основной домейн и 3 аллиаса". Тогда  HTTP_HOST.

3. И у меня выше опечатка вышла (без очков уже плохо читается)

RewriteRule ^(?>.*)$ https://%1%{REQUEST_URI} [L,R=301,L]

Лишнюю L поставил.

J
На сайте с 20.02.2014
Offline
120
jkm
#10
fliger #:

1. Хоть и на спичках, но экономия.

Ну если экономить, то из шаблона ^(?>.*)$ можно всё выкинуть и оставить только ^

RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]

По поводу %{SERVER_NAME} в документации сказано, что подставляться имя хоста из запроса будет если в настройках отключить UseCanonicalName.

UseCanonicalName    Off

https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#rewritecond

SERVER_NAME and SERVER_PORT depend on the values of UseCanonicalName and UseCanonicalPhysicalPort respectively.

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