htaccess阻止直接访问文件,同时允许重写规则访问这些文件



概述

到目前为止,我一直在创建这个非常好的.htaccess文件,其中包含一些非常好的设置。我想知道现在是否有可能只允许通过平面链接访问文件,同时拒绝直接访问相同的文件。


说明和当前设置

要更好地提出此问题,请考虑以下内容:
我有一个文件:即myFile.php
位于子文件夹中:即my/path/to/file/
文件的完整路径将为my/path/to/file/myFile.php
通过URL访问此文件时,会写道:my.domain.com/my/path/to/file/myFile.php

在我的.htaccess文件中,我写了一个重写规则,类似于下面的代码行(前面有一些RewriteCond,确保分别满足主机和文件名的条件):

RewriteRule ^home$ /my/path/to/file/myFile.php [NC,L]

这意味着试图访问我的页面my/path/to/file/myFile.php的人可以简单地编写my.domain.com/home,而不是丑陋的路径my.domain.com/my/path/to/file/myFile.php


问题和首选结果

我要问的是:
如果有人或机器试图访问my.domain.com/my/path/to/file/myFile.php,同时允许通过my.domain.com/home访问文件,是否可以阻止对myFile.php的访问?

非常感谢您对此的任何帮助

如果有人或机器试图访问my.domain.com/my/path/to/file/myFile.php,同时允许通过my.domain.com/home 访问文件,是否可以阻止对myFile.php的访问

是的,使用THE_REQUEST变量是可能的,它表示Apache从浏览器收到的原始请求,并且在执行一些重写规则后不会被覆盖。

您可以使用此规则来阻止对特定文件的直接访问:

RewriteCond %{THE_REQUEST} /my/path/to/file/myFile.php[?/s] [NC]
RewriteRule ^ - [F]

最新更新