Используя модуль « Правила », вы можете реализовать правило, похожее на это:
{ "rules_disallow_accesss_to_selected_urls" : {
"LABEL" : "Disallow access to selected URLs",
"PLUGIN" : "reaction rule",
"OWNER" : "rules",
"REQUIRES" : [ "rules" ],
"ON" : { "init" : [] },
"IF" : [
{ "text_matches" : {
"text" : [ "site:current-page:url" ],
"match" : "content\/video-1",
"operation" : "regex"
}
}
],
"DO" : [
{ "drupal_message" : {
"message" : "Sorry, access to URLs like [site:current-page:url] is not allowed ...",
"type" : "error"
}
},
{ "redirect" : { "url" : "no_access" } }
]
}
}
Любой, кто попытается получить доступ к относительному пути, content/video-1
будет перенаправлен на страницу с путем no_access
, и будет показано соответствующее сообщение об ошибке (адаптируйте этот путь в соответствии со своими собственными соглашениями и просмотрите сообщение, которое будет показано).
Приведенное выше правило ограничивает доступ только к относительному пути content/video-1
(как в вашем вопросе). Если вы хотите расширить правило до аналогичных URL-адресов, измените его content\/video-1
на что-то подобное content\/video-\\d+$
или любой другой вариант, который соответствует соглашению об именах ваших путей.
Приведенное выше правило (пока) не учитывает применение действия «Правила» только для пользователей с выбранными ролями. Но для любого, кто немного знаком с модулем «Правила», это простое «условие», которое нужно добавить ... например: пропустить действие правил для пользователей с ролью редактора, администратора и т. Д. Что можно сделать, добавив правила Условие типа «пользователь НЕ имеет роли администратора (и / или редактора)». Таким образом, такие специальные пользователи все равно могут просматривать такие узлы (без такого дополнительного условия они также не могут больше просматривать такие узлы ...).
Чтобы поэкспериментировать с этим правилом на своем собственном сайте, просто скопируйте весь приведенный выше код правил и вставьте его в новое правило на своем сайте, созданное с помощью функции «Импорт» (доступно, если включен пользовательский интерфейс «Правила»). Затем отредактируйте / уточните, чтобы он соответствовал вашей среде (например, появится сообщение «Извините, ...»).
Дополнительное уточнение
В одном из других ответов вы добавили комментарий, который включает это:
... Я хотел перенаправить на домашнюю страницу в некоторых случаях, 404 в других и т. Д., Поэтому у меня был лучший контроль ...
Если это то, что вы также хотите сделать, то вы можете дополнительно усовершенствовать действие вышеупомянутых правил, добавив также модуль условных правил . При этом для каждого из ваших «некоторых случаев» вы можете указать соответствующий URL-адрес для перенаправления. Обратитесь к моему ответу « Как установить значения некоторых полей в зависимости от значения списка? » Для иллюстрации того, как использовать этот модуль в действии правил.