.htaccess内の特定の1つのフォルダーへのアクセスを拒否する


130

ユーザーsite/includesがURLを操作してフォルダにアクセスできないようにしようとしています。

すべてを拒否し、手動で許可する例外を個別に作成する必要があるのか​​、この1つのフォルダーを拒否するだけなのか、または使用できる書き換え機能があるのか​​わかりません。

具体例:localhost/site/includesURLに入力してディレクトリファイルを表示したくない。


1
Options -Indexesルートディレクトリにある.htaccessファイルにリストディレクトリを書き込むことを許可しない

回答:


205

site/includes/.htaccessファイルを作成し、次の行を追加します。

Deny from all

5
おい!anubhava / apiフォルダー内のapiファイルへの直接アクセスを無効にするためにこれを使用しましたが、今ではすべてのWebサービス呼び出しが403 forbiddenステータスを送信しています。誰かがブラウザーからアクセスしたときにアクセスをブロックしたいだけです。
ravisoni 14

9
Webサーバーの場合、ブラウザーと非ブラウザーの間の要求に実際の違いはありません。
anubhava 14

nginxを使用していますが、使用できません.htaccess。だから、どうすればそれなしでそれを行うことができ.htaccessますか?感謝
Shafizadeh 2015

すべてを拒否した場合、どのようにフォルダー/サブフォルダーのファイルにアクセスできますか?folder / subフォルダーにファイルを保存すると、404エラーが発生します。
Vikas Khunteta

2
Deny from all404は与えられませんが403は与えられません。PHP/ Perlなどを使用してファイル/フォルダーにアクセスできますが、Webリクエストは使用できません。質問に答えられなかった場合は、新しい質問を開くことができます。
anubhava

52

を使用して、フォルダへのアクセスを拒否することもできます RedirectMatch

htaccessに次の行を追加します

RedirectMatch 403 ^/folder/?$

これにより403 forbidden、フォルダーのエラーが返されます。http://example.com/folder/ただし、フォルダー内のファイルやフォルダーへのアクセスはブロックされません^/folder/.*$。フォルダー内のすべてをブロックする場合は、正規表現パターンをに変更します。

別のオプションは、有効になっているmod-rewrite 場合url-rewrting-module、次のようなものを使用できますroot/.htaccss

RewriteEngine on

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

これは内部的にリクエストfolderforbiddenエラーページにマッピングします。


1
Apache 2.22での最良のソリューションは最初のものです:RedirectMatch .....
John

6
.htaccessアクセスを拒否する必要があるすべてのディレクトリに複数のファイルを作成するのではなく、この回答をはるかに好みます。
DanMad 2018年

40

.htaccess使用する必要があるファイル

Deny from  all

これを入れsite/includes/.htaccessて、includesディレクトリに固有にします

あなたが使用できるディレクトリファイルのリストを許可したくない場合

Options -Indexes 

2
これは再帰的ですか?
Abdillah

@Abdillahはい、そうです
Oliver M

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ファイルに置いて、サブディレクトリを含むすべてのWebサイトディレクトリのファイルリストを無効にすることもできます。


6
これはファイルリストを無効にしませんが、インデックスを作成するときにすべてのファイルを無視するようにautoindexerに指示します。ファイルの一覧表示を無効にするには、を使用しますOptions -Indexes
Vladimir Kornea 16

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

理解できないいくつかの理由により、folder / .htaccessの作成とDeny from Allの追加がうまくいきませんでした。理由はわかりませんが、簡単に見えましたが機能しませんでした。代わりに、ルートhtaccessにRedirectMatch 403 ^ / folder /.*$を追加すると機能しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.