Drupal 7 некоторые несуществующие URL-адреса не перенаправляют на 404?

В Drupal 7 некоторые из (несуществующих) URL-адресов не перенаправляют на 404 или на любую страницу с ошибкой, которую следовало бы. Вместо этого он по-прежнему показывает свою верхнюю родительскую папку. Например, как:

  • www.mywebsite.com/items/ааааааааааааааа
  • www.mywebsite.com/items/bbbbbbbbbbbbbbbbbb

Все НЕПРАВИЛЬНЫЕ URL-адреса под /items/, как я указал выше, показывают страницу своего родителя:
www.mywebsite.com/items вместо перенаправления на 404
Я не хочу, чтобы его родитель отображался, если на самом деле страницы нет .

Но странно то, что это НЕ происходит на всех паттернах. Я имею в виду, другим другим родителям нравится:

  • www.mywebsite.com/users/ааааааааааааааа
  • www.mywebsite.com/users/bbbbbbbbbbbbbbbbb

Для неправильного URL-адреса, введенного в этом родительском пути /users/, он ПРАВИЛЬНО перенаправляется на страницу 404.

Что это, пожалуйста?


person 夏期劇場    schedule 04.09.2012    source источник


Ответы (4)


Посмотрите на это, очень полезно http://peterpetrik.com/blog/2009/11/non-existent-urls-views-2

person fr1trick    schedule 01.10.2012
comment
Это примечание со страницы Views 404 помогло мне: 404s для представлений также можно выполнить, установив Global: Null в разделе Arguments. - person Mika Andrianarijaona; 13.10.2014

Если я правильно понял ваш вопрос, то это вообще не проблема.

Это потому, что ваши/внесенные/основные модули подключаются к системе меню Drupal.

Если пункт меню (точнее, пункт меню маршрутизатора. Подумайте о пути вроде «admin/config/development/performance») не имеет знака «%», будет выполнена функция обратного вызова меню. Например, если модуль регистрирует «элементы», путь example.com/items не будет 404, и будет запущена соответствующая функция обратного вызова меню элемента меню. Эта функция обратного вызова может использовать дополнительные части URL (example.com/items/123), если они указаны.

«узел» — хороший пример. (хотя технически это разные пункты меню маршрутизатора). Открытие example.com/node не вызовет ошибку 404.

Если модуль регистрирует 'items/%' , то example.com/items вызовет ошибку 404. Другими словами, вторая часть URL-адреса необходима для выполнения функции обратного вызова меню.

Если проблема, с которой вы столкнулись, связана с пользовательским модулем, убедитесь, что вы зарегистрировали правильную версию элементов маршрутизатора. Если требуется вторая часть URL-адреса, зарегистрируйте items/%. Вы можете выполнить ошибку 404, вызвав drupal_not_found().

person AKS    schedule 04.09.2012

Используете ли вы представления для этого пути (/items)?

Вот проблема для представлений: Предотвращение дублирования контента (поскольку представления возвращают 200 вместо 400 404< /а>)

Вы можете создать контекстный фильтр, чтобы предотвратить это.

merlinofchaos написал:

Если вы не хотите такого поведения, добавьте аргумент Global: NULL в представления и используйте этот параметр для проверки того, что аргумент пуст.

Для Drupal 6 может помочь модуль Views 404.

person unor    schedule 06.09.2012

Вы можете настроить свою установку drupal для перенаправления на определенную страницу 404, которую вы создаете.

Перейдите на www.yoursite.com/admin/config/system/site-information и введите свою страницу 404 .

person Bourkadi    schedule 05.09.2012
comment
Думаю, на 4lvin это не пройдет. Страница с ошибкой работает для него, но не для всех страниц. - person unor; 06.09.2012