【问题标题】:Is it possible to redirect all requests to all files in a specific folder to a specific php-file inside the same folder是否可以将所有请求重定向到特定文件夹中的所有文件到同一文件夹中的特定 php 文件
【发布时间】:2017-07-11 20:38:42
【问题描述】:

我尝试通过将请求重定向到同一文件夹中的特定 php 文件来保护特定文件夹中的所有文件(pdf 文件和图像文件)。 php 文件检查用户是否登录,然后抛出 404(未登录)或返回请求的文件。

这是一个 WordPress 安装。当用户上传文件时,它将自动存储在一个文件夹中(在上传文件夹内),该文件夹由特定帖子的 id 命名。当用户选择“安全”选项时,我会在此特定文件夹中自动构建另一个名为“安全”的文件夹。在这个“安全”文件夹中,只有登录的用户才能访问这些文件。

我已经设法通过在根目录中的 htaccess 中放置一个规则来解决这个问题。但我的目标是通过这个安全文件夹中的 htaccess 重定向它。所以我们的目标是在这个文件夹中自动创建这个“安全”文件夹和适当的 htaccess php 文件。

我的主要问题是我必须放在 .htaccess 文件中的代码。

我搜索了很多 - 但仍然没有找到适合我的解决方案。任何帮助将不胜感激。

【问题讨论】:

  • 从它的“声音”来看,您需要一些自定义脚本来执行此自动化。如果没有您现有的代码,我认为没有人可以在这件事上为您提供帮助。
  • 嗨。无论如何,感谢您的回答。 Ivo P 明白了这个问题。这正是我正在寻找的......

标签: php wordpress .htaccess redirect


【解决方案1】:

未登录时的错误应该是403“禁止”。这与 404“未找到”不同。

假设脚本名为 reader.php 你可以把它放在 .htaccess

RewriteEngine On
RewriteCond ${REQUEST_URI} !reader.php
RewriteRule ^ reader.php [L]

您可以添加一个条件来仅对现有文件执行此操作:

RewriteCond %{REQUEST_FILENAME} -f 

放在重写行之前

reader.php 可以做

<?php
    if( !login_check() ) {
       header('HTTP/1.0 403 Forbidden');
       exit();
    }
    else {
        $file = $_SERVER['REQUEST_URI'];
        $filelocal = ''; // translate $file to something in current dir

       ## give correct header for filetype
       header('Content-Type: application/pdf');

       readfile($filelocal);
    }

【讨论】:

  • 如果您对答案感到满意,您可以接受它
猜你喜欢
  • 1970-01-01
  • 2014-03-30
  • 1970-01-01
  • 2019-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-28
  • 2021-04-09
相关资源
最近更新 更多