0

カスタム モジュールで定義することにより、Drupal 6 Web サイトにカスタム メニュー項目を作成しました。これは非常に単純な 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 パスは動作するはずですが、何らかの理由で動作しません。

助けてくれてありがとう!

明確にするために...クリーンURLが有効になり、メニューレジストリが数回再構築されました。

4

1 に答える 1

1

この問題は、サンプル コールバック ページ「menu_test」で使用されているパスに固有のものです。このコールバック パスを (「test_menu」などに) 変更すると、問題が解決します。これは、実際には .htaccess ファイルの書き換えルールの問題でした。ルールの一部は、パスの末尾として「test」を探します。したがって、私の場合、「test」で終わるパスは使用できません。これが、403 エラーが発生した理由です。

同じタイプの問題が発生した場合は、書き換えルールで同様の状態を確認してください。私の場合、「テスト」でパスを終了することは単純に避けることにしました。これはそれほど難しくないはずです。

とにかくコメントをありがとう!それが今判明したことを嬉しく思います。

訂正:書き換えルールではありません... 特定のファイルとディレクトリを保護する FilesMatch ルールです。

于 2010-04-17T18:22:53.747 に答える