Здравствуйте.
Достался на поддержку сайт на Drupal 5 с самописным модулем и вот что-то я никак не могу до конца понять поведение в этом модуле hook_menu.
Итак, на сайте есть страница с описанием авто (сайт дилера), со ссылкой, например, /avto/punto. Код hook_menu:
'title' => $model,
'title_show' => $model_title,
'access' => user_access('access content'),
'weight' => $key,
'callback' => 'models_model_overview',
'callback arguments' => array($term, $node),
'type' => MENU_NORMAL_ITEM,
'suffix' => theme("models_menu_box", $term, $i),
);
Тут для каждой модели свой $path, $model и т.д. Причём для модели punto переменная $path имеет вид avto/punto, т.е. никаких лишних слэшей или знаков процента нет.
Проблема состоит в том, что если написать, например, /avto/punto/blablabla, то вместо ошибки 404 загружается страница с описанием авто (/avto/punto), т.е. идёт коллбэк функции models_model_overview. Больше в качестве коллбэка эта функция нигде не прописана.
Судя по документации в данном случае при переходе по пути /avto/punto/blablabla должна появляться ошибка 404.
Я понимаю, что можно просто добавить ещё пункт с path содержащим в конце знак процента, но есть ещё пункты типа /avto/punto/colors, которые загружают свою страницу (с другой функцией в качестве коллбэка).
Как бы мне сделать так, чтобы при вызове несуществующей страницы выводилась ошибка 404.
Помогите, пожалуйста.
Комментарии
Это нормальное поведение
по идее это решается с помощью link rel="canonical" и хедером ответа Link с указанием канонического урла , не знаю правда как с этим дела обстоят в пятерке
Получается, что на сайте есть бесконечное количество одинаковых страниц, что же тут нормального? Да и поисковикам это очень не нравится.
Я не совсем понял, опишите, пожалуйста, подробнее.
У вас SEO-головного мозга.
Это не у меня, а у заказчика, хотя я тоже считаю, что если страницы на сайте нет, то должна выводиться ошибка 404, а не подгружаться вместо неё другая страница, что, как минимум, неожиданно для пользователя.
Кстати, я обнаружил, что такая фигня по всему сайту, т.е. я так понимаю, что это проблема в самом Drupal. В панели управления я не нашёл какого-либо управления подобным функционалом. Подскажите, пожалуйста, куда копать?
Во-первых, копайте в сторону апгрейда на 6/7
Во-вторых, если очень хочется - воспользуйтесь поиском, посмотрите модули для шестёрки и перепишите их на пятёрку
Мне нужно решение для пятой версии.
Т.е. если я их все перепишу, то проблема исчезнет?
Проблемы нет, точнее она только у вас и ещё у некоторых одержимых SEO.
Но вполне лечится, если не заболевание мозга, то хотя бы отдача 404 в друпале возможна
Не знаю как для вас, но если бы мне, к примеру, дали номер квартиры 211, а я прихожу, звоню в дверь, мне открывают, я вхожу внутрь, но вдруг обнаруживаю, что это вообще другая квартира, то я бы, как минимум, впал бы в ступор.
Уважаемый RxB, не могли бы вы поделиться вашим способом лечения?
а если все таки объяснить заказчику , что проблемы надо решать по мере их возникновения , а не из seo баек
когда у заказчика в индексе появятся страницы /avto/punto/blabla пускай решает свои вопросы путем обращения к людям ,которые смогут решить его проблемы
Я, собственно, поэтому и прошу помощи, потому что в индексе появились эти левые страницы и их полно, а я никак не могу понять почему Друпал не отдаёт 404-ую ошибку, вроде бы код правильный.