Здравствуйте. Если страница views с раскрытыми фильтрами, то нет 404.
Пример:
Обычная нода (существующая) /node/43 - статус 200к.
Если попытаться зайти на эту ноду вот так: /node/43_любой_текст_или_символ/ - то будет 404
НО если эта нода с раскрытым фильтром views, то при заходе на /node/43_любой текст_или_символ/ не будет 404, а будет /node/43 и фильтр не сработает как бы.
Как сделать, чтобы при URL _любой_неправильный_текст_или_символ/ была ошика 404? На странице с фильтром views.
Комментарии
Здравствуйте!
Зачем фильтр Views на странице ноды?
Зачем вообще страница ноды есть представлением??
Здравствуйте.
Просто так выразился чтоб легче объяснить.
Фильтр views на странице views.
Пример: views вытаскивает поля, делая товары на example_site.com/psu
Во views есть несколько раскрытых фильтров. Они работают как положено.
Но если на такой странице сделать опечатку в URL example_site.com/psu/m или example_site.com/psu/sgfsgczxdbb
то 404 ошибка не выскакивает.
А показывается example_site.com/psu с версткой, как для карточки товара. Потому что в карточке товара я сделал чтобы были видны сайдбары.
Пробла вот в чем: эта страница example_site.com/psu/sgfsgczxdbb с несуществующей подпапкой /sgfsgczxdb и Друпал применяет к ней верстку от карточки товара.
я бы мог просто в блоках указать, чтобы не было сайдбаров вот так
Блоки-показывать на всех страницах, кроме перечисленных - psu/*
Но для карточек товара psu сайдбары нужны, а в общей странице /psu не нужны. Поэтому так было сделано.
А запрос с опечаткой ломает верстку, странно что не показывает 404.
Ничего странного. Если страница "/psu" - вьюха, то страница "psu/sgfsgczxdbb" - вьюха с аргументом (читать та же вьюха / страница).
Верстку "ломает" не запрос с опечаткой, а не правильно настроенная логика вывода блоков.
В конце-концов, можно настроить нужное поведение представления с помощью контекстных фильтров.
Представления должны делать выборку, а не решать куда переадресовать пользователя.
Вы не совсем верно понимаете логику views. В данном случае у вас есть представление, в котором используется контекстный фильтр, т.е. "afssdfsfsd" из адреса. Очевидно, что такого параметра не существует, поэтому представление выводит то что вы указали выводить при несуществующем параметре. В случаях подобным вашему обычно пишут "такого товара не найдено".
А ещё я набрал вопрос в гугле и первой же ссылкой получил вот такой ответ: https://drupalfly.ru/station/return-page-404-in-views - мне такое решение не нра, но работать будет.
P.S. ИМХО логика работы сайта должна исключать попадание пользователя на несуществующие урлы.
Ссылка для размышления https://drupal.ru/node/137319/ololo/trololo
https://www.drupal.org/project/views404