Как сделать редирект (301, 302). Общая тема

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

Флаг [OR] - это "ИЛИ", без него необходимо выполнение ВСЕХ условий, с ним - ЛЮБОГО.

[NC] - регистронезависимость.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
MG
На сайте с 29.07.2014
Offline
50
#632

Sitealert, понял, спасибо!

А чем отличается запись http://site.ru/$1 от http://site.ru ? что в данном случае даёт "$1" ?

---------- Добавлено 11.03.2018 в 23:52 ----------

если я делаю редирект на этот сайт

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

Это если надо пути сохранить

RewriteRule ^(.*)$ http://site2.ru/$1 [R=301,L]
Первые скобки - $1, вторые скобки - $2 и т.д.
MG
На сайте с 29.07.2014
Offline
50
#634

Sitealert, спасибо! а может привести пример со вторыми скобками, когда может использоваться?

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

RewriteRule ^news/([0-9]+)/([^/]+)$ http://site2.ru/$2/news/$1 [R=301,L]

Редирект с

http://site.ru/news/2018/science

на

http://site2.ru/science/news/2018

MG
На сайте с 29.07.2014
Offline
50
#636

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

Может Вы сможете и подсказать, как решить такую задачу )

Много доменов привязано к одному сайту, как прописать такое условие:

если я захожу с ДОМЕН1 и айпи не Х.Х.Х.Х, то редирект на site.ru, а если айпи равны Х.Х.Х.Х, то редирект на google.com

далее

если я захожу с ДОМЕН2 и айпи не Х.Х.Х.Х, то редирект на site.ru, а если айпи равны Х.Х.Х.Х, то редирект на ya.ru

далее

если я захожу с ДОМЕН3 и айпи не Х.Х.Х.Х, то редирект на site.ru, а если айпи равны Х.Х.Х.Х, то редирект на rambler.ru

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

Да попробуйте покомбинировать то, что выше, с директивами типа

RewriteCond %{HTTP_HOST} ^ДОМЕН1$ [NC]
С учётом, что [OR] - альтернативное условие, без [OR] - совпадение условий, восклицательный знак - отрицание. Почитайте немного, в гуглояндексах много инфы по этим вопросам, ничего сложного.
MG
На сайте с 29.07.2014
Offline
50
#638

Sitealert, подскажите, пожалуйста,

вот такая запись для моих условий будет правильна?

RewriteCond %{HTTP_HOST} ^(www\.)?site1\.ru$ [NC]

RewriteCond %{REMOTE_ADDR} ^x\.x\.x\.x$ [OR]

RewriteCond %{REMOTE_ADDR} ^y\.y\.y\.y$

RewriteRule ^ https://google.ru [R=301,L]

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

RewriteCond %{HTTP_HOST} ^(www\.)?site2\.ru$ [NC]

RewriteCond %{REMOTE_ADDR} ^x\.x\.x\.x$ [OR]

RewriteCond %{REMOTE_ADDR} ^y\.y\.y\.y$

RewriteRule ^ https://yandex.ru [R=301,L]

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

---------- Добавлено 12.03.2018 в 01:13 ----------

Или вот так правильно

RewriteCond %{HTTP_HOST} ^(www\.)?site1\.ru$ [NC]

RewriteCond %{REMOTE_ADDR} ^x\.x\.x\.x$ [OR]

RewriteCond %{REMOTE_ADDR} ^y\.y\.y\.y$

RewriteRule ^ https://google.ru [R=301,L]

RewriteCond %{HTTP_HOST} ^(www\.)?site1\.ru$ [NC]

RewriteCond %{REMOTE_ADDR} ^!x\.x\.x\.x$

RewriteCond %{REMOTE_ADDR} ^!y\.y\.y\.y$

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

RewriteCond %{HTTP_HOST} ^(www\.)?site2\.ru$ [NC]

RewriteCond %{REMOTE_ADDR} ^x\.x\.x\.x$ [OR]

RewriteCond %{REMOTE_ADDR} ^y\.y\.y\.y$

RewriteRule ^ https://yandex.ru [R=301,L]

RewriteCond %{HTTP_HOST} ^(www\.)?site2\.ru$ [NC]

RewriteCond %{REMOTE_ADDR} ^!x\.x\.x\.x$

RewriteCond %{REMOTE_ADDR} ^!y\.y\.y\.y$

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

J
На сайте с 20.02.2014
Offline
120
jkm
#639

Если апач 2.4


RewriteCond expr "-R '111.1.0.0/16'" [OR]
RewriteCond expr "-R '222.2.2.0/24'" [OR]
RewriteCond expr "-R '33.0.0.0/8'"
RewriteRule ^ http://site2.ru/ [R=301,L]
S
На сайте с 30.09.2016
Offline
469
#640
MishGU:
вот такая запись для моих условий будет правильна?
...
Или вот так правильно

Правильно будет последовательно проверять различные условия, если не происходит редирект, то апач читает хтакцесс дальше, пока не дойдёт до конца файла. Поэтому не надо 100500 раз писать безусловное правило

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

- это правило выполнится, когда апач до него дойдёт, не сделав других редиректов.

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