【问题标题】:Redirect direct access to files in subfolder to script将对子文件夹中文件的直接访问重定向到脚本
【发布时间】:2017-06-22 15:32:01
【问题描述】:

我有一个包含用户上传文件的子文件夹。我想将所有直接文件请求重定向到这个文件夹到另一个 .php 脚本......所以我可以在我发送/显示文件给他之前检查用户是否登录。 例如:

/mainsite/uploads/user/2324/file.pdf

需要转发给

/mainsite/uploads/permissions.php

但我需要在 permissions.php 中才能做到:

$url = $_SERVER['REQUEST_URI'];

看看最初的请求是什么...以便在所有“检查”之后readfile()文件。

我试过这个:

RewriteEngine On
RewriteRule ^/uploads/user/?$ /uploads/permissions.php [R=301,L]

但这只是一个简单的转发...我不知道用户请求的文件或文件夹。

我知道我可以通过在“user/{userid}”下创建的每个文件夹中创建一个单独的 htaccess 文件来做到这一点,但我想要一个更简单的功能。我不想拥有 10000 个 htaccess 文件,如果我可以只用一个。

谢谢

【问题讨论】:

    标签: php .htaccess mod-rewrite


    【解决方案1】:

    尝试使用以下语法:(我添加了 R=301 部分,这在我的版本中不是必需的,所以它没有经过全面测试,没有 R 选项也可以工作)

    RewriteRule "^/uploads/user/(.+)$" "/uploads/permissions.php?file=$1" [R=301,QSA,L]
    

    您可以在permissions.php 的$_GET 数组中获取您的file 变量。但是,我不建议直接使用此值,因为它可能不安全。最好的方法是只允许固定值,例如 switch,之前已将 var 过滤为字符串。

    【讨论】:

    • 很好!!它可以在没有 "" 引号的情况下工作。是的,我知道,我正在检查所请求文件的扩展名,看看它是否是文档/图像/等,如果不是,我拒绝该请求。我也强制发送以“上传”为根目录的文件,所以没什么好笑的:)谢谢
    猜你喜欢
    • 2017-03-17
    • 1970-01-01
    • 2015-04-07
    • 2021-09-08
    • 1970-01-01
    • 2018-09-30
    • 2017-12-05
    • 1970-01-01
    • 2014-03-31
    相关资源
    最近更新 更多