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

时间:2016-04-29 17:07:01

标签: .htaccess mod-rewrite url-rewriting

一般概述

我一直在创建这个非常好的.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访问该文件?

非常感谢有关此方面的任何帮助

1 个答案:

答案 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]