Стандартное поведение Drupal заключается в передаче всех аргументов независимо от того, запрошены они или нет. Иногда такое поведение желательно. Однако мне нужно вернуть 404 для чего угодно, кроме строки запроса.
Пример проблемы http://drupal.org/project/modules http://drupal.org/project/modules/google.com <- это должно вернуть 404; 200 дано. Штраф за дублированный контент!
Модуль views 404 предполагает, что по умолчанию вы не хотите, чтобы аргументы передавались. Однако нет версии D7 модуля.
Но на странице проекта написано, что 404-е для представлений также можно выполнить, установив Global: Null в Arguments.
Очевидно, что в D7 «аргументы» теперь являются «контекстными фильтрами», но я не уверен, какие настройки добавить в контекстный фильтр Global: null, чтобы получить желаемый результат.
Любая помощь будет оценена.
:)
Я редактировал неправильный дисплей, и вид не работал должным образом. Нет необходимости использовать код PHP для проверки аргумента; см обновленный ответ.Вы можете сделать это с помощью представлений из коробки функциональности. В каждой настройке контекстного фильтра вы можете увидеть флажок «Указать критерии проверки», чтобы увидеть больше настроек.
Затем вы можете выбрать «валидатор» на основе ваших условий просмотра. Если вы хотите выполнить пользовательскую проверку, выберите код php. Верните True или False в php-код в зависимости от ваших условий проверки.
Наконец, выберите «Действие, которое нужно предпринять», так как доступ к дисплею запрещен! Смотрите скриншот ниже для nid контекстного фильтра.
источник