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

V
На сайте с 30.11.2015
Offline
0
#31

Спасибо большое! Всё отлично работает.

SeVlad
На сайте с 03.11.2008
Offline
1609
#32
siv1987:
RewriteCond %{HTTP_HOST} ^(www\.)?site\.ru$
RewriteCond %{THE_REQUEST} !^[A-Z]{3,9}\ /\ HTTP/
RewriteCond %{THE_REQUEST} !^[A-Z]{3,9}\ /(myurl|mydir/)
RewriteRule ^(.*) http://old.site.ru/$1 [R=301,L]

Как-то так

Сорри, я потерял ещё одно условие :(.

Надо что бы НЕ редиректилось с /anydir/ любой вложенности.

Что бы не листать топик, повторю.

Надо редеректить с www.site.ru и site.ru отредиректить на поддомен old.site.ru пхпшные урлы. Они могут быть с параметрами и без оных. Т.е. вида

/anyurl.php

/anyurl.php?anypar=anyvar&anypar2=anyvar2
/?anypar=anyvar&anypar2=anyvar2
/anydir/anyurl.php?anypar=anyvar&anypar2=anyvar2
/anydir/?anypar=anyvar&anypar2=anyvar2

те с расширением php и/или с параметрами.

При этом не редиректить морду сайта и урлы с параметрами из определённых каталогов (с подкаталогами) - mydir, а также с любые урлы без расширений файла и без параметров.

Те НЕ редиректить вида:

/myurl.php?anypar=anyvar&anypar2=anyvar2

/mydir/myurl.php?anypar=anyvar&anypar2=anyvar2
/mydir/?anypar=anyvar&anypar2=anyvar2
/anydir/
/anydir

тут /anydir (/anydir/) может быть любой вложенности, но без параметров.

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
siv1987
На сайте с 02.04.2009
Offline
427
#33

anydir любой вложенности

RewriteCond %{THE_REQUEST} !^[A-Z]{3,9}\ /(myurl|(.+/)?anydir/)

или

RewriteCond %{THE_REQUEST} !^[A-Z]{3,9}\ (/myurl|.*?/mydir/)

SeVlad
На сайте с 03.11.2008
Offline
1609
#34
siv1987:
anydir любой вложенности
RewriteCond %{THE_REQUEST} !^[A-Z]{3,9}\ /(myurl|(.+/)?anydir/)

или

RewriteCond %{THE_REQUEST} !^[A-Z]{3,9}\ (/myurl|.*?/mydir/)

не, anydir не известно же (это ЧПУ, мб так понятней).

mydir - известное, тут всё сходится.

siv1987
На сайте с 02.04.2009
Offline
427
#35
SeVlad:
не, anydir не известно же (это ЧПУ, мб так понятней).

RewriteCond %{THE_REQUEST} !^[A-Z]{3,9}\ /(myurl|.+?/)

SeVlad:
не, anydir не известно же (это ЧПУ, мб так понятней)

не очень. Лучше словами объясните. anydir, mydir... либо anydir либо mydir.

KA
На сайте с 24.07.2007
Offline
86
#36

RewriteCond %{HTTP_HOST} ^(?:www\.)?xn--e1afmkfd\.xn--p1ai$

RewriteRule ^ http://mysite.ru/пример-рф/? [R=302,L]

Как сделать, чтобы пример.рф/*любыесимволы* редиректил на mysite.ru/пример-рф, чтобы эти *любыесимволы* отсекались при редиректе?

SeVlad
На сайте с 03.11.2008
Offline
1609
#37
siv1987:
Лучше словами объясните. anydir, mydir... либо anydir либо mydir.

С site.ru старый самописный сайт перенесён в old.site.ru. Его урлы - просто пхп файлы (с расширением .php) и урлы с параметрами (где с расширением, где без).

На site.ru делается новый сайт с ЧПУ. В ЧПУ нет параметров в урлах. Но может быть со вложенной структурой (site.ru/любой_набор_допустимых_символов/любой_набор_допустимых_символов/название_статьи/).

Хочется автоматом редиректить старые урлы на old и, ессно, не трогать новые.

НО! В определённых каталогах (админка и ещё 2-3, заранее известных) передаётся ГЕТ с параметрами. Тут уже редирект не нужен же.

Надеюсь, стало понятней ;)

siv1987
На сайте с 02.04.2009
Offline
427
#38

Редирект любых ссылок с параметрами не с /myurl.php или /mydir/

RewriteCond %{HTTP_HOST} ^(www\.)?site\.ru$

RewriteCond %{THE_REQUEST} !^[A-Z]{3,9}\ /\ HTTP/

RewriteCond %{THE_REQUEST} !^[A-Z]{3,9}\ /(myurl.php|mydir/)

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\?

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

SeVlad
На сайте с 03.11.2008
Offline
1609
#39
siv1987:
Редирект любых ссылок с параметрами не с /myurl.php или /mydir/

То ли я объяснил не так, то ли ты не так понял :(

В общем так ЧПУшные ссылки (site.ru/название_статьи/ , site.ru/любой_набор_допустимых_символов/любой_набор_допустимых_символов/название_статьи/) тоже будет редиректить, а этого не нужно.

АПД. Старые урлы, которые нужно редиректить, отличаются от новых (ЧПУшных, которые не нужно редиректить) наличием *.php и/или параметров. Редиркет должен работать везде, кроме определённых каталогов/названий файлов.

siv1987
На сайте с 02.04.2009
Offline
427
#40
SeVlad:
тоже будет редиректить, а этого не нужно.

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

SeVlad:
наличием *.php и/или параметров

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\?

заменить на

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*?(\?|\.php)

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