Как правильно организовать редирект?

Главные вкладки

Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 14 февраля 2011 в 2:16

Добрый вечер, коллеги!

Возник вопрос, к поиску решения на который я пока даже не знаю, как подступиться. Быть может, кто-нибудь из вас сталкивался с подобной проблемой и сможет подсказать решение.

1. Есть куча (тысячи) УРЛов вида example.net/node-type/nid (Pathauto).
2. Хочется заменить (с 301 редиректом) на более «дружелюбные», например: example.net/node-type/nid/node-title.
3. Надо сохранить возможность находить ноды (в том числе те, что будут созданы позднее) через адрес старого «типа» (example.net/node-type/nid), тем более, что многие из этих УРЛов хорошо засвечены в поисковиках.

Первая мысль — использовать Path redirect со включённым «example.net/node-type/nid», где стоит опция автоматического создания редиректа при изменении алиаса. Но это не решает третью подзадачу для тех нод, что будут созданы в будущем: все они получат алиасы вида example.net/node-type/nid/node-title, а example.net/node-type/nid создан не будет.

Вторая мысль — использовать views типа page с адресом node-type и передавать ему в качестве аргумента nid. В результате любая нода нужного типа (в том числе созданная в будущем) будет получена как при обращении по адресу старого типа, так и по адресу нового... Но это не решает вторую подзадачу полностью, так как ведёт к дублированию содержимого, потому что поисковики будут видеть одинаковые страницы по адресам обоих типов, что не кошерно.

Можно ли как-нибудь соединить две эти «мысли» в одну? Представляется что-нибудь типа views, которому скармливается аргумент nid, а на выходе получается 301 на адрес ноды, которая соответствует результату выполнения запроса во views.

Комментарии

Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 14 февраля 2011 в 15:10

"darkdim" wrote:
а зачем?

На тот случай, если пользователь по какой-то причине ввёл в адресной строке неправильный адрес страницы. Сам не раз сталкивался с тем, что получал ссылку на статьи с аналогичными адресами, но, когда в адресе была допущена ошибка, я в итоге видел 404. Тем не менее, отказавшись от последней части адреса (node-title), всё же можно найти нужную ноду. Мне потому и хочется использовать views с первым аргументом (nid), потому что тогда вне зависимости от второго аргумента (node-title) нужный материал всегда будет найден.

Аватар пользователя darkdim darkdim 15 февраля 2011 в 13:32

<a href="mailto:ingumsky@drupal.org">ingumsky@drupal.org</a> wrote:
"darkdim" wrote:
а зачем?

На тот случай, если пользователь по какой-то причине ввёл в адресной строке неправильный адрес страницы. Сам не раз сталкивался с тем, что получал ссылку на статьи с аналогичными адресами, но, когда в адресе была допущена ошибка, я в итоге видел 404. Тем не менее, отказавшись от последней части адреса (node-title), всё же можно найти нужную ноду. Мне потому и хочется использовать views с первым аргументом (nid), потому что тогда вне зависимости от второго аргумента (node-title) нужный материал всегда будет найден.

честно говоря я еще не встречал пользователей, кто вручную бы вбивал полный адрес, или даже nid, максимум делают закладки, минимум - вбивают домен и роют по сайту, ну и заходы с поисковиков - само собой))

Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 15 февраля 2011 в 14:59

"darkdim" wrote:
честно говоря я еще не встречал пользователей, кто вручную бы вбивал полный адрес, или даже nid, максимум делают закладки, минимум - вбивают домен и роют по сайту, ну и заходы с поисковиков - само собой))

Может быть я уже просто слишком мудрю Smile Но задачу хочется решить хотя бы из практического интереса — узнать, как это делается Smile

Спасибо за ссылку на видео!

Аватар пользователя Antoniy Antoniy 3 декабря 2012 в 14:14

Для D6 это модули Pathauto в связке c Path redirect.

Вроде как аналогия для D7 из той связки модуль Redirect, но непонятно, как с ним в D7 сделать такую же автоматическую переадресацию со старых алиасов на новые.