繁体   English   中英

.htaccess限制除一个特定URL之外的所有访问

[英].htaccess to restrict access from all except one specific url

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

甚至开始理解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>

我很确定我在应该编写域的方式上失败了,也许这就是为什么它不起作用的原因?

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

jTheMan是正确的。 有一种使用PHP解决此问题的更好方法。 我的解决方法是在下面,以防万一对其他人有用。 唯一很棒的添加是使下面的代码允许仅从一个IP直接访问URL,例如我自己的:0)

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

//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

谢谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM