.htaccess限制除一个特定网址以外的所有网址的访问权限

时间:2012-10-13 22:31:05

标签: apache .htaccess

我正在使用会员脚本来允许一群人访问私人文件。问题是任何知道文件链接的人都可以轻松绕过成员资格脚本并直接访问这些文件。我的目标是通过http://domain.com/folder1/folder2/index.php阻止直接访问网址,并仅接受http://domain.com/folder1/file_with_link_to_index.php的访问权限。会员资格脚本没用,除非我可以阻止人们在文件位置输入网址。

我很难开始理解Apache,但我试图做的是使用“拒绝所有”然后“允许来自http://folder1/file_with_link_to_index.php”。因此,只能通过“file_with_link~”访问文件。它没用。我仍然可以将文件的URL粘贴到浏览器中并访问目录。

我在StackO上发现了类似的问题,但没有足够的经验来理解和实际采取与我的问题类似的小块并实际使用它们。这可能是一件简单的事情,但是我很沮丧,试图弄清楚我无法看到它。

以下是我尝试使用的一个简单示例:

否认除此处所示的所有内容

<Limit GET POST PUT>
 order deny,allow
 deny from all
 allow from 12.345.67.890
 allow from http://domain.com/fold1/LINKING_FILE/program_index.php
</Limit>

我很确定我在编写域名的方式上失败了,也许这就是为什么它不能正常工作?

2 个答案:

答案 0 :(得分:1)

我会使用另一种方法而不是htaccess。将文件放在公共网站无法访问的目录中,然后使用您的成员资格php脚本来检索它们。

答案 1 :(得分:0)

jTheMan是对的。有一种更好的方法可以使用PHP解决这个问题。我对我的问题的解决方法如下,以防万一对其他人有用。唯一令人敬畏的补充是让下面的代码允许从一个IP直接访问URL,就像我自己的:0)

我将以下文件添加到“head”或“index”或每个应用程序中首先调用的页面顶部:

//Begin refuse direct URL Connections
$refering=parse_url($_SERVER['HTTP_REFERER']);
if($refering['host']==$_SERVER['HTTP_HOST']){
   echo "";
} else {
   header("Location: http://www.yourdomain.com");
    exit();
}
//End refuse direct URL Connections

谢谢!