我在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;
}
由于我打开了干净的网址,因此路径应为www.example.com/menu_test。该URL给出了403错误。但是,如果我输入www.example.com/?q=menu_test,一切正常。为什么我收到403错误?菜单项是无用的,因为它总是试图转到干净的URL路径,这应该有效,但不是出于某种原因。
感谢您的帮助!
要清楚......已启用干净的URL,并且已多次重建菜单注册表。
答案 0 :(得分:1)
此问题特定于示例回调页面“menu_test”中使用的路径。更改此回调路径(例如,更改为“test_menu”)可解决此问题。这实际上是.htaccess文件中重写规则的问题。部分规则将“test”视为路径的结尾。因此,在我的情况下,我将无法使用任何以“test”结尾的路径。这就是我收到403错误的原因。
如果您遇到相同类型的问题,请检查您的重写规则是否存在类似情况。在我的情况下,我决定简单地避免以“test”结束我的任何路径,这应该不会太困难。
感谢您的评论!我很高兴现在已经知道了。
更正:这不是重写规则...是保护某些文件和目录的FilesMatch规则。