Блокировать некоторые URL-адреса Drupal - PullRequest
4 голосов
/ 10 октября 2010

Есть ли модуль, который я могу использовать для отключения некоторых системных страниц Drupal?Например, я бы хотел отключить node, taxonomy/term/*, filter/tips.

Ответы [ 2 ]

8 голосов
/ 11 октября 2010

Я не уверен, есть ли модуль, который делает это, но не так уж сложно написать свой собственный модуль для этого. Вам нужно только реализовать 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.

6 голосов
/ 11 октября 2010

Мне кажется, что это более «одноразовая» конфигурация.Поэтому мне интересно, нужно ли для этого иметь интерфейс администратора, который вы запросили в одном из ваших комментариев.

Если вы используете 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>

Это запретит доступ к этим URL.Но вам нужно убедиться, что у вас нет URL с псевдонимом путей taxonomy/term/ и т. Д.В противном случае пользователь может получить доступ к этим URL-адресам.

Проверьте http://httpd.apache.org/docs/2.0/mod/core.html#locationmatch и http://httpd.apache.org/docs/2.0/mod/core.html#location для некоторой документации

...