Запретить доступ (вместо 404) для несуществующих учетных записей пользователей


Для конкретного проекта, над которым я работаю, я хотел бы вернуть отказ в доступе вместо 404 для несуществующих учетных записей пользователей. Я попытался настроить пользовательский обратный вызов страницы 404 и обратный вызов доступа в hook_menu(), а затем возвращать значение FALSE при посещении таких путей, как user/, но это не помогает. Я также пытался вызвать drupal_access_denied() непосредственно при обратном вызове, но это просто приводит к ошибке сервера.

Я также пытался переопределить пункт меню user/%user в hook_menu_alter(), но это никак не влияет на 404 не найденных страницы.

Есть ли какой-либо способ получить пути, подобные user/239841239 (любой несуществующий идентификатор пользователя), для отображения страницы с отказом в доступе вместо 404?

[ Обновление: Я просто переместил код, который использовал в пользовательском обратном вызове доступа к странице 404 (см. Ниже), на обратный вызов страницы, и теперь страница с отказом в доступе обслуживается правильно.]

// If visiting a non-existent user page, redirect to access denied.
if (strpos(request_path(), 'user/') !== FALSE) {
  drupal_access_denied();
  drupal_exit();
}
Author: geerlingguy, 2013-01-29

1 answers

Я бы попробовал настроить условное перенаправление с вашей страницы 404 на вашу пользовательскую страницу ошибок, которая срабатывает только в том случае, если путь ссылки - пользователь/*.

Я бы попытался сделать это, используя правила .

 2
Author: beth, 2013-01-29 17:33:17