Правильно ли прописан 301 редирект?

J
На сайте с 07.10.2010
Offline
163
949

Добрый день. У большей части страниц сайта изменил url-адрес с целью сокращения его длины.

Был такой адрес:

http://site.ru/name-katalog/name-tovar-about

Стал такое адрес:

http://site.ru/katalog/name-tovar

Соответственно в файле .htaccess были прописаны редиректы.

Редирект для страниц каталогов:


Redirect 301 /name-katalog http://site.ru/katalog

Редирект для страниц товаров:


Redirect 301 /name-katalog/name-tovar-about http://site.ru/katalog/name-tovar

Если прописан только второй редирект, то он срабатывает нормально. Если прописаны оба редиректа, то в случае со страницами товаров происходит следующее неверное перенаправление:

С адреса http://site.ru/name-katalog/name-tovar-about на http://site.ru/katalog/name-tovar-about.

Если я вдобавок прописываю еще и третий редирект:


Redirect 301 /katalog/name-tovar-about http://site.ru/katalog/name-tovar

То редирект срабатывает корректно. Но склеит ли такая цепочка редиректов адреса страниц:

http://site.ru/name-katalog/name-tovar-about

и

http://site.ru/katalog/name-tovar

Для меня очень важно, чтобы позиции запросов, продвигаемых на этих страницах, потом восстановились. Правильно ли я прописал редиректы? Благодарю за помощь.

---------- Добавлено 30.03.2014 в 12:28 ----------

немного поэкспериментировал. Опустил в файле .htaccess код редиректа:


Redirect 301 /name-katalog http://site.ru/katalog

ниже кода редиректа:


Redirect 301 /name-katalog/name-tovar-about http://site.ru/katalog/name-tovar

и теперь без третьего редиректа перенаправление срабатывает корректно.

wwwwww
На сайте с 29.04.2011
Offline
195
#1

Перенаправление в Апаче отрабатывает Mod_rewrite.

Почитайте справку, даже на русском есть.

В целом Вам нужно понять одну вещь Ваш редирект состоит из 2 частей:

Redirect 301 что куда

ЧТо - это регулярное выражение и об этом стоит почитать, иначе ошибки будут, как продолжающееся непонимание "всей этой кухни".

В Вашем случаем (совсем простой вариант) можно сделать такой вариант:


RewriteEngine on
RewriteRule ^/name-katalog$ http://site.ru/katalog [R=301, L]
RewriteRule /name-katalog/name-tovar-about http://site.ru/katalog/name-tovar [R=301, L]

Также Вам стоит прочитать о порядке обработки директив.

Видишь? Свободная подпись.
J
На сайте с 07.10.2010
Offline
163
#2

wwwwww, а такой вариант записи редиректа:


Redirect 301 /katalog/name-tovar-about http://site.ru/katalog/name-tovar
Redirect 301 /name-katalog http://site.ru/katalog

разве является неправильным?

---------- Добавлено 30.03.2014 в 15:52 ----------

вернее вот так:


Redirect 301 /name-katalog$ http://site.ru/katalog
Redirect 301 /katalog/name-tovar-about http://site.ru/katalog/name-tovar

верная запись? Редирект срабатывает корректно.

---------- Добавлено 30.03.2014 в 15:53 ----------

хотя нет. Этот редирект:


Redirect 301 /name-katalog$ http://site.ru/katalog

не срабатывает.

---------- Добавлено 30.03.2014 в 15:56 ----------

wwwwww, с вашим вариантом сервер начал выдавать ошибку 500

J
На сайте с 07.10.2010
Offline
163
#3

Кто может сказать, чем принципиально отличается эта запись:


RewriteRule /name-katalog/name-tovar-about http://site.ru/katalog/name-tovar [R=301, L]

от этой:


Redirect 301 /katalog/name-tovar-about http://site.ru/katalog/name-tovar
J
На сайте с 07.10.2010
Offline
163
#4

кто знает, в чем заключаются различия, напишите, пожалуйста. Или принципиальных различий нет?

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

Jaroslav, принципиально тем что это директивы разных модулей, и работают они непо разному. Сравните хотябы синтаксис этих директивы и увидите в их отличия.

[R=301, L]

Без пробела после запятой

Но склеит ли такая цепочка редиректов адреса страниц

Склеет

J
На сайте с 07.10.2010
Offline
163
#6

siv1987, но ссылочный вес передастся и в том, и в том случае?

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

Вес передается при 301 редиректе, и в том и в другом случае 301 редирект.

O
На сайте с 29.05.2008
Offline
195
#8
Jaroslav:
Кто может сказать, чем принципиально отличается эта запись:

Тем, что при использовании регулярного выражения (Rewrite) можно создать универсальное правило редиректа, например, перенаправлять все запросы в URI которых содержится слово "files", а не перебирать каждый вариант вручную.

Если количество редиректов у вас сводится к числу меньше 10, тогда можно обойтись и Redirect, если вам нужен редирект для большого количества рубрик, товаров, стоит составить универсальное правило - регулярное выражение.

---------- Добавлено 31.03.2014 в 14:33 ----------

Jaroslav:
wwwwww, с вашим вариантом сервер начал выдавать ошибку 500

Возможно, не активирован mod_rewrite.

J
На сайте с 07.10.2010
Offline
163
#9
ortegas:
Если количество редиректов у вас сводится к числу меньше 10, тогда можно обойтись и Redirect, если вам нужен редирект для большого количества рубрик, товаров, стоит составить универсальное правило - регулярное выражение.

Меня больше волнует вопрос: ссылочный вес в итоге будет передан и по тому, и по тому варианту редиректа?

Товаров несколько десятков. Но у каждого из них URL-адрес изменился по-разному, вряд ли получится прописать универсальное правило для всех.

O
На сайте с 29.05.2008
Offline
195
#10
Jaroslav:
Меня больше волнует вопрос: ссылочный вес в итоге будет передан и по тому, и по тому варианту редиректа?

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

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