首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >drupal 7:钩子拦截位于“公共文件系统路径”内的url文件请求

drupal 7:钩子拦截位于“公共文件系统路径”内的url文件请求
EN

Drupal用户
提问于 2013-06-07 13:00:35
回答 1查看 472关注 0票数 1

对于Drupal 7,当转到: admin/config/media/ File -system时,您可以同时设置一个公共文件系统路径和一个私有文件系统路径。

在“公共文件系统路径”内的文件是否有可能在通过url直接访问这些文件时,钩子可以拦截该文件请求,并根据用户角色决定是否允许或将它们发送到像(drupal_goto('user', array('query' => array('destination' => $pre_alias)));)这样的goto

我知道hook_file_download可以拦截私有文件的文件请求,但如果可能的话,我不想花费额外的时间来设置私有区域。

EN

回答 1

Drupal用户

回答已采纳

发布于 2013-06-07 13:09:09

不是标准的,不。

Drupal的.htaccess文件中有以下条件用于主index.php重写:

代码语言:javascript
复制
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

这基本上意味着对物理、现有文件的请求在没有Drupal参与的情况下被传递过。

要改变这种行为,您需要覆盖这些条件,无论是在根.htaccess中还是在文件文件夹本身下面的条件。对于nginx,您将做的基本上是相同的事情,除了vhost的配置文件将是重写逻辑的位置。

然后,您需要在path files上实现一个菜单回调,它处理所有传入的文件请求。该回调将调用自定义钩子,您的模块(S)将使用该钩子来决定是否应该下载该特定文件。如果是这样的话,您将调用一个文件传递,如果不是403。

长话短说,这不是一个好主意-你会给你的服务器增加大量额外的引导程序(每个CSS文件,每一个图像,每一个东西)。您所描述的是私有文件系统,使用它会更好。

公共文件系统就是这样设计的--公开的。

票数 3
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/75507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档