Нужна помощь с редиректами

zenja
На сайте с 04.08.2010
Offline
139
558

Если у кого есть подобный опыт, буду признателен за совет

Итак, клею старый домен к новому.

Имею список урлов со старого сайта(_old.ru/url1, _old.ru/url2), которые хочу средиректить на страницы с подобным содержимым на новом сайте.

В корне старого кладу .htaccess со следующим содержимым:


Redirect 301 /url1 http://_new.ru/newurl1
Redirect 301 /url2 http://_new.ru/newurl2

<FilesMatch "robots.txt$">
RewriteEngine off
</FilesMatch>
RewriteEngine on
RewriteRule (.*) http://_new.ru/ [R=301,L]

Получаю: при обращении к любому урлу старого сайта (_old.ru/*) - редиректит на морду _new.ru, а нужно чтобы url1 и url2 редиректило куда надо

Подскажите, люди добрые :)

Быть минимально гордым, быть максимально честным! Услуги по продвижению Ваших сайтов: прозрачно, качественно, недорого (/ru/forum/779787)
gormarket
На сайте с 29.12.2010
Offline
47
#1

Вот эта строка делает редирект любого документа на морду сайта _new.ru

RewriteRule (.*) http://_new.ru/ [R=301,L]

Нужно так

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

$1 для данного варианта это все, что попадает в эти скобки (.*), т.е. любой документ

Товары и цены в магазинах Вашего города: Городской рынок (http://gormarket.ru/)
zenja
На сайте с 04.08.2010
Offline
139
#2

спасибо, так не пойдет, провобовал уже

(кстати, пришлось стартпост слегка отредактировать)

в вашем случае получается, что редирект происходит на тот же ури

_old.ru/url1 -> _new.ru/url1

а надо

_old.ru/url1 -> _new.ru/newurl1 (что собственно описано в первой строчке хтаксес)

можно, конечно, сделать как вы говорите, но, чтобы открывалась нужная страница, строки

Redirect 301 /url1 http://_new.ru/newurl1
Redirect 301 /url2 http://_new.ru/newurl2

придется перенести в хтаксес нового сайта. но тут возникает вопрос - валидно ли это? передастся ли возраст и вес старой страницы через матрешку редиректов ?

gormarket
На сайте с 29.12.2010
Offline
47
#3

Redirect и RewriteRule выполняют одно и то же, только RewriteRule делает это по маске адресов и условия можно использовать, а Redirect только конкретный адрес переадресует

Поэтому поставив для двух адресов Redirect не нужно "доукомплектовывать" их строкой RewriteRule, они и без этого для этих двух адресов должны сработать.

Матрешку конечно же делать не стоит, лучше сразу делать редирект на нужный адрес

например так (это все на старом сайте, на новом ничего добавлять не нужно)

RewriteEngine On

RewriteBase /

RewriteRule ^url1$ http://_new.ru/newurl1 [R=301,L]

RewriteRule ^url2$ http://_new.ru/newurl2 [R=301,L]

....

RewriteRule ^url101000$ http://_new.ru/newurl101000 [R=301,L]

RewriteRule ^url101001$ http://_new.ru/newurl101001 [R=301,L]

Это если нет абслолютно никакого соответствия между новым и старым адресом (тогда придется для каждого адреса делать отдельную строку)

А если есть возможность, то наверно лучше все таки использовать маски адресов.

Приведенный список можно делать и командой Redirect, но я с ней практически не работал, всегда пользовался только RewriteRule

---------- Добавлено 30.01.2013 в 03:16 ----------

Может все таки есть какие-то соответствия между старыми и новыми адресами ?

Может папка на новом домене по-другому называется, а документы относительно нее те же адреса имеют ?

Например если бы приведенные адреса (url1 - newurl1) были бы не условными, а реальными, то вместо 101001 строк можно было бы написать всего одну строку, обрабатывающую все эти адреса

RewriteRule ^url([0-9]+)$ http://_new.ru/newurl$1 [R=301,L]

zenja
На сайте с 04.08.2010
Offline
139
#4

Спасибо.

Соответсвий в адресах нет, т.к. старый сайт на виндовой cms с веселыми урлами типа %многобков%.aspx, а новый сайтец на друпале с красимыми чпу

упд: к сожалению, все равно не работает как надо :(

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