繁体   English   中英

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

[英]Deny access to one specific folder in .htaccess

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

我不知道我是否必须拒绝所有内容并手动设置个别例外以允许,我是否可以拒绝这个文件夹,或者是否有可以使用的重写功能。

具体示例:我不想通过在 URL 中键入localhost/site/includes来查看目录文件。

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

Deny from all

您还可以使用RedirectMatch拒绝访问文件夹

将以下行添加到 htaccess

RedirectMatch 403 ^/folder/?$

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

另一个选项是mod-rewrite如果启用了url-rewrting-module ,您可以在root/.htaccss使用类似以下root/.htaccss

RewriteEngine on

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

这将在内部将对该folder的请求映射到forbidden错误页面。

.htaccess文件中,您需要使用

Deny from  all

把它放在site/includes/.htaccess以使其特定于includes目录

如果您只想禁止列出可以使用的目录文件

Options -Indexes 

我们将目录设置为非常安全,拒绝所有文件类型的访问。 下面是您要插入到 .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>

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

您可以为该文件夹创建一个 .htaccess 文件,该文件应该拒绝访问

Deny from  all

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

Redirect /includes/ 404.html

只需将 .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来源。

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

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

您可以通过这种方式动态执行此操作:

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

在 Apache 2.4 上,您可以在根.htaccess文件中使用 Apache <If>表达式来阻止直接访问此特定子目录及其中的所有内容。

例如:

<If "%{REQUEST_URI} =~ m#^/site/includes($|/)#">
    Require all denied
</If>

由于某些我不明白的原因,创建文件夹/.htaccess 并从所有添加拒绝对我不起作用。 我不知道为什么,这看起来很简单但不起作用,将 RedirectMatch 403 ^/folder/.*$ 添加到根 htaccess 反而起作用了。

暂无
暂无

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

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