【问题标题】:.htaccess RewriteCond %{REQUEST_FILENAME}.htaccess 重写条件 %{REQUEST_FILENAME}
【发布时间】:2019-04-16 12:10:53
【问题描述】:

我的 Web 根目录中有一个名为 docs 的文件夹,我需要确保未经身份验证的用户无法访问此目录中的文件。

我在这个目录中有一个名为 index.php 的文件,用于验证用户是否已登录并相应地提供所请求的文件。

所以为了捕捉文件请求,我在文档中创建了以下 .htaccess 文件

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !index.php
RewriteRule ^(.*)$ index.php?requested_file=$1 [QSA,L]
</IfModule>

如果我导航到 /docs/index.php 然后调用 index.php,则此方法有效。但是,如果我导航到 /docs/cat.jpg,那么我会被直接发送到 cat.jpg。但是我应该无法访问此文件...

谁能告诉我这里做错了什么?

【问题讨论】:

  • 你使用的是apache还是nginx
  • 我在本地使用 nginx,在实时服务器上使用 apache
  • 好的,但是.htaccess 是一个 Apache 配置文件。它对你的 Nginx 服务器的影响绝对为零。
  • 谢谢理查德,但这在服务器上也不起作用
  • 听起来您的.htaccess 文件根本没有被处理。删除 &lt;IfModule&gt; 包装器(你不需要它) - 你得到一个错误吗?如果没有,请尝试在文件中输入废话 - 是否出现错误?

标签: apache .htaccess nginx


【解决方案1】:

我在基于 Apache 的堆栈上尝试了您的确切代码,它运行良好

所以你的 apache 指令没有问题

可能您正在使用 php 或 IDE 的内置实时服务器。为此,您需要基于 Apache 的堆栈,例如 Lampp、Wampp、Xampp 或 Mampp。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多