Собственно, вопрос:
Может ли Global Redirect обрабатывать алиасы типа ?p=33 ? То есть алиасы в формате запроса.
Суть трабла. При переезде на друпал нужно сохранить урлы страниц старого сайта, который работал на самописной CMS, в которой не было понятия о чистых ссылках.
Например: есть стандартный друпальный адрес domain.com/node/111, который нужно подменять на domain.com/?p=256.
Комментарии
UPD: Немного уточнил ТЗ, и задача усложнилась...
Необходимо не просто организовать редирект, а по хитрой схеме.
Алгоритм:
Пользователь приходит по линку domain.com/?p=256, его нужно направить 301 редиректом на domain.com/something, который на самом деле является domain.com/node/111.
Можно ли такое организовать? По сути тут два алиаса, но насколько мне известно, даже если есть несколько алиасов на один экземпляр контента, работает только последний алиас в списке.
сдается мне, что под эту задачу будет проще и правильнее написать кучу правил для mod_rewrite в .htaccess
Под эту задачу проще написать модуль с hook_init() внутри
Трудоемко, и сложновато, ибо нужно обеспечить подмену адресов для этак 20К позиций в интернет-магазине.
Тоже уже смотрю в сторону программного решения. Хотя заметил интересную особенность. Если создать два алиаса для одной ноды, то "официальным" будет только последний алиас, а предидущий алиас будет редиректить на последний.
Но есть еще трабл: глобал редирект не хочет корректно обрабатывать алиасы, которые начинаются со знака вопроса. Например алиас /?p=33 редиректит на главную страницу сайта, тогда как он связан с определенной нодой.
Все сводится теперь к сабжу - как заставить глобал редирект понимать алиасы типа: /?p=33 ???
никак
Ок. Спасибо. Буду писать свой модуль.
Проблему решил следующим образом. Написал модуль-надстройку над Global Redirect, который перехватывает строку запроса, ищет в ней специфические элементы по нужным мне шаблонам. Если не находит - отдает на Global Redirect как есть.
Если находит - смотрит по базе данных чистый урл для перехваченого алиаса, подменяет его, и отдает на Global Redirect. Если не находит - отдает 301-й на главную.
Проблему "двойных" алиасов решил кастомной таблицей, которая частично дублирует структуру стандартной url_alias. Присвоение "специфических" алиасов реализовал в кастомном импортере данных. Все вместе заняло около сотни строчек кода. Если кому-то интересны подробности как и что - пишите в ЛС.
есть у меня домен.рф надо чтобы при его открытии он открывал ноду с другого сайта... типа zaz.ru/?=node/13451
или 2 вариант
при открывании домен.домен.рф открывался домен домен.рф\ноде
есть идеи?
1. Если я правильно понял суть проблемы, то нужно чтобы с домен.рф редиректило на zaz.ru/?=node/13451 Для этого проще всего задать 301 редирект через htaccess.
Выглядеть директива будет примерно так: Redirect 301 / http://zaz.ru/?=node/13451
2. Решается аналогичным образом 301 редиректом через htaccess.
а этот htaccess на каком сайте лежит?
если у меня ничего не открывается, я могу просто прописать на парковку и он туда будет выбрасывать...
а вот как 3 уровня прописать?
типа вася.пупкин.рф если его как такого не существует и он перекидывает на http://zaz.ru/?=node/13451
Если Вы ходите, чтобы с домен.рф редиректило на zaz.ru/?=node/13451, Вы прописываете правила в htaccess на сайте домен.рф
По "трем уровням" - не понял сути вопроса.
домен 3 уровня. от которого есть только домен - нет хостинга и нет самого сайта. а надо чтобы при наборе домена 3 уровня открывал сайт другой и конкретную страницу. - сейчас понятно?
Если домен к хостингу не привязан то по идее нельзя. Потому как редирект через htaccess делать нужно, а он на хостинге лежать должен.