.htaccess 如何通过URL阻止文件访问

.htaccess 如何通过URL阻止文件访问,.htaccess,http,url,.htaccess,Http,Url,我有一个像这样的子页面 mypage.com/subpage 但这只是别名,所有文件都在/data/subpage中。用户自己需要访问的唯一文件是index.php,所有其他文件都是由索引本身导入的,具体取决于属性(GET、sessions等) 我想要这个: 允许用户使用/subpage访问index.php,但不能使用/data/subpage 不要让用户直接访问/data/subpage及其子文件夹中的任何内容 仍然让index.php访问这些文件 我希望我写的可以理解 谢谢你的帮助

我有一个像这样的子页面

mypage.com/subpage
但这只是别名,所有文件都在
/data/subpage
中。用户自己需要访问的唯一文件是
index.php
,所有其他文件都是由索引本身导入的,具体取决于属性(GET、sessions等)

我想要这个:

  • 允许用户使用
    /subpage
    访问
    index.php
    ,但不能使用
    /data/subpage
  • 不要让用户直接访问
    /data/subpage
    及其子文件夹中的任何内容
  • 仍然让
    index.php
    访问这些文件
我希望我写的可以理解

谢谢你的帮助

编辑:My current.htaccess(位于根目录下)

尝试:

因此,对
/data/subpage/
的任何直接请求都会导致404。如果希望生成“403”,则可以将
R=404
替换为
F


编辑:


有点对,谢谢。一、 作为查看器,我无法访问这些文件,但我的页面也无法访问它(例如图像)。有什么办法吗

这不是你访问这些文件的页面,而是你告诉浏览器访问它们的页面。这意味着您要知道页面告诉浏览器要访问它们的唯一方法是检查referer。不幸的是,referer可以被轻易伪造,因此这并不能保证人们无法访问您的所有文件

RewriteCond %{THE_REQUEST} \ /+data/subpage/
RewriteCond %{HTTP_REFERER} !^http://yourdomain.com/subpage/(index\.php)?
RewriteRule ^ - [L,R=404]

有点对,谢谢。一、 作为查看器,我无法访问这些文件,但我的页面也无法访问它(例如图像)。有什么办法吗?@Gomi注意到访问这些文件的不是你的页面,而是客户端的浏览器。只是你的页面告诉浏览器加载它。是的,你是对的,我没有正确地考虑它。我刚刚修改了它-我添加了我真的不想被访问的文件的扩展名(对于ex.XML文件)。非常感谢你
RewriteCond %{THE_REQUEST} \ /+data/subpage/
RewriteRule ^ - [L,R=404]
RewriteCond %{THE_REQUEST} \ /+data/subpage/
RewriteCond %{HTTP_REFERER} !^http://yourdomain.com/subpage/(index\.php)?
RewriteRule ^ - [L,R=404]