Почему я получаю сообщение об ошибке 403 при просмотре пользовательского меню Drupal через чистый URL-адрес? - PullRequest
0 голосов
/ 16 апреля 2010

Я создал пользовательский пункт меню на своем веб-сайте Drupal 6, определив его в пользовательском модуле. Это чрезвычайно простой пункт меню MENU_NORMAL_ITEM. Пункт меню определен как

/**
 * Implementation of hook_menu().
 */
function menu_test_menu() {
  $items['menu_test'] = array(
    'title' => 'Menu Test',
    'page callback' => 'menu_test_hello',
 'access callback' => TRUE,
 'type' => MENU_NORMAL_ITEM,
  );

  return $items;
}

Поскольку у меня чистые URL-адреса, путь должен быть www.example.com/menu_test. Этот URL дает мне ошибку 403. Но, если я вхожу на www.example.com/?q=menu_test, все работает нормально. Почему я получаю ошибку 403? Пункт меню бесполезен, потому что он всегда пытается перейти к чистому пути URL, который должен работать, но по какой-то причине не работает.

Спасибо за помощь!

Чтобы было понятно ... Чистые URL включены, и реестр меню несколько раз перестраивался.

1 Ответ

1 голос
/ 17 апреля 2010

Эта проблема связана с тем путем, который используется в примере страницы обратного вызова "menu_test". Изменение этого пути обратного вызова (например, «test_menu») решает проблему. Фактически это была проблема с правилом перезаписи в файле .htaccess. Часть правила ищет «тест» как окончание пути. Так что, в моем случае, я не смогу использовать какой-либо путь, который заканчивается в «тесте». Вот почему я получаю 403 ошибки.

Если вы столкнулись с проблемой такого же типа, проверьте правило перезаписи на наличие аналогичных условий. В моем случае я решил просто не заканчивать любой из моих путей «тестом», что не должно быть слишком сложным.

Спасибо за комментарии в любом случае! Я просто рад, что это выяснилось.

ИСПРАВЛЕНИЕ: Это не правило перезаписи ... это правило FilesMatch, которое защищает определенные файлы и каталоги.

...