阻止一些Drupal URL

时间:2010-10-10 17:32:14

标签: drupal drupal-6 module

是否有可用于禁用某些Drupal系统页面的模块?例如,我想停用nodetaxonomy/term/*filter/tips

2 个答案:

答案 0 :(得分:8)

我不确定是否有一个模块可以做到这一点,但为此编写自己的自定义模块并不困难。您只需要实现hook_menu_alter(并在更改代码后清除缓存)。您可以选择返回“拒绝访问”页面或“未找到404”:

<?php
  function MODULENAME_menu_alter(&$items) {
    // This will deny access to taxonomy/term/* for all users.
    $items['taxonomy/term/%']['access callback'] = FALSE;
    // This will completely remove filter/tips, resulting in a 404.
    unset($items['filter/tips']);
  }
?>

如果您想了解有关编写Drupal模块的更多信息,请参阅http://drupal.org/developing/modules

答案 1 :(得分:6)

这对我来说似乎更像是“一次性”配置。所以我想知道是否有必要在你的一条评论中为你提供一个管理界面。

如果您使用的是apache,则在您网站的虚拟主机配置中,您可以包含以下指令:

<LocationMatch ^/taxonomy/term>
  SetHandler server-status
  Order Deny,Allow
  Deny from all
</LocationMatch>

<LocationMatch ^/filter/tips>
  SetHandler server-status
  Order Deny,Allow
  Deny from all
</LocationMatch>

这将拒绝访问这些网址。但是您需要确保没有名称为taxonomy/term/等路径的URL别名。否则,用户可以访问这些URL。

检查http://httpd.apache.org/docs/2.0/mod/core.html#locationmatchhttp://httpd.apache.org/docs/2.0/mod/core.html#location一些文件