我一直在创建这个非常好的.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
。
我要问的是:
如果某个人或机器尝试转到myFile.php
,是否可以阻止my.domain.com/my/path/to/file/myFile.php
访问,同时允许通过my.domain.com/home
访问该文件?
非常感谢有关此方面的任何帮助
答案 0 :(得分:1)
如果某个人或机器试图转到
访问该文件my.domain.com/my/path/to/file/myFile.php
,可以阻止对myFile.php的访问,同时允许通过my.domain.com/home
是的,可以使用THE_REQUEST
变量,表示Apache从您的浏览器收到的原始请求,并且在执行一些重写规则后不会被覆盖。
您可以使用此规则阻止对该特定文件的直接访问:
RewriteCond %{THE_REQUEST} /my/path/to/file/myFile\.php[?/\s] [NC]
RewriteRule ^ - [F]