拒绝访问.htaccess中的一个特定文件夹


130

我试图site/includes通过操纵URL 来拒绝用户访问该文件夹。

我不知道是否必须拒绝所有操作并手动允许个别例外,是否只能拒绝此文件夹,或者是否存在可以使用的重写功能。

具体示例:我不想通过输入localhost/site/includesURL 来查看目录文件。


1
只是为了禁止列出目录Options -Indexes,请在根文件夹中的.htaccess文件中写入内容

Answers:


205

创建site/includes/.htaccess文件并添加以下行:

Deny from all

5
嘿!!anubhava我已经使用它禁用了对我的/ api文件夹中的api文件的直接访问,但是现在所有网络服务调用都发送403禁止状态..我只想在有人从浏览器访问它时阻止访问。
ravisoni 2014年

9
对于Web服务器,浏览器和非浏览器之间的请求之间没有真正的区别。
anubhava

我使用nginx,不能使用.htaccess。因此,如果没有该怎么办.htaccess?谢谢
Shafizadeh 2015年

如果全部拒绝,如何访问文件夹/子文件夹的文件?文件进入文件夹/子文件夹会出现404错误。
Vikas Khunteta

2
Deny from all不会给出404而是403。您仍然可以使用PHP / Perl等访问文件/文件夹,但不能使用Web请求。如果未回答您的问题,您可以打开一个新问题。
anubhava 2015年

52

您也可以使用以下命令拒绝访问文件夹 RedirectMatch

将以下行添加到htaccess

RedirectMatch 403 ^/folder/?$

这将为403 forbidden文件夹返回错误,即:;http://example.com/folder/但是它不会阻止访问该文件夹中的文件和文件夹,如果要阻止文件夹中的所有内容,则只需将regex模式更改为即可^/folder/.*$

另一个选项是mod-rewrite 如果url-rewrting-module已启用,则可以在中使用类似以下的内容root/.htaccss

RewriteEngine on

RewriteRule ^folder/?$ - [F,L]

这将在内部将请求映射folderforbidden错误页面。


1
使用Apache 2.22时,最好的解决方案是第一个:RedirectMatch .....
John

6
更喜欢此答案,而不是.htaccess在我需要拒绝访问的每个目录中创建多个文件。
DanMad

40

.htaccess文件中,您需要使用

Deny from  all

将其放入site/includes/.htaccess特定于includes目录的位置

如果只希望禁止列出目录文件,则可以使用

Options -Indexes 

2
这是递归的吗?
阿卜迪拉

@Abdillah是的
Oliver M Grech

18

我们将目录设置为非常安全,拒绝所有文件类型的访问。下面是要插入到.htaccess文件中的代码。

Order Allow,Deny 
Deny from all 

由于我们现在已经设置了安全性,因此现在我们希望允许访问所需的文件类型。为此,请将下面的代码添加到刚插入的安全代码下的.htaccess文件中。

<FilesMatch "\.(jpg|gif|png|php)$">
Order Deny,Allow
   Allow from all
</FilesMatch>

您的最终.htaccess文件看起来像

Order Allow,Deny 
Deny from all 

<FilesMatch "\.(jpg|gif|png|php)$">
Order Deny,Allow
   Allow from all
</FilesMatch>

允许访问受保护目录中的特定文件类型的来源


这个答案使我很头疼。奇迹般有效。
我非常努力,但我哭得更厉害

9

您可以为该文件夹创建.htaccess文件,但应该拒绝

Deny from  all

或者您可以重定向到自定义404页面

Redirect /includes/ 404.html

6

只需将.htaccess放入您要限制的文件夹中

## no access to this folder

# Apache 2.4
<IfModule mod_authz_core.c>
    Require all denied
</IfModule>

# Apache 2.2
<IfModule !mod_authz_core.c>
    Order Allow,Deny
    Deny from all
</IfModule>

资料来源:MantisBT资料来源。


4

您也可以将此IndexIgnore * 文件放在根.htaccess文件中,以禁用所有网站目录(包括子目录)的文件列表


6
这不会禁用文件列表,但是会告诉自动索引器在构造索引时忽略所有文件。要禁用文件列表,请使用Options -Indexes
弗拉基米尔·科纳

3

创建index.php,index.html,index.htm是不安全的。因为,任何人都可以通过猜测文件名来访问指定目录中的文件。例如:http: //yoursite.com/includes/file.dat 因此,推荐的方法是创建一个.htaccess文件以拒绝所有访问者;)。玩得开心 !!


2

您可以通过以下方式动态地执行此操作:

mkdir($dirname);
@touch($dirname . "/.htaccess");
  $f = fopen($dirname . "/.htaccess", "w");
  fwrite($f, "deny from all");
fclose($f);

0

由于某些我不了解的原因,创建文件夹/.htaccess并添加“全部拒绝”对我而言无效。我不知道为什么,这看起来很简单,但是没有用,而是在根htaccess中添加RedirectMatch 403 ^ / folder /.*$来代替。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.