htaccess로 디렉토리 목록 거부


103

: 나는 폴더, 예를 들어이 /public_html/Davood/ 예를 들어, 폴더에 너무 많은 하위 폴더를 : /public_html/Davood/Test1/, /public_html/Davood/Test1/Test/, /public_html/Davood/Test2/, ...

/public_html/Davood/디렉토리 목록 /Davood및 하위 폴더 를 거부하려면 htaccess 파일을 추가하고 싶습니다. 가능합니까?


3
Options All -Indexes몇 가지 답변 에서처럼 작동하지 않는 이유를 모르겠습니다 !
Fr0zenFyr

1
경우 Fr0zenFyr @ 그것은, 웹 서버 구성에 따라 다릅니다의 AllowOverride All작품
DJafari

답변:


124

옵션-색인 은 디렉토리 목록을 방지하기 위해 작동해야합니다.

.htaccess 파일을 사용하는 경우 기본 아파치 구성 파일 에 "allowoverride options"설정이 있는지 확인하십시오 .


1
이 나던 변경 아무것도
minhajul

69

.htaccess해당 디렉토리 의 파일에 이것을 추가해보십시오 .

Options -Indexes

이것은 더 많은 정보가 있습니다.


그래 나는 -Indexes가 디렉토리 목록을 비활성화한다고 생각했지만, 대신 폴더의 모든 내용을 차단합니다 ... 그 이유를 아는 사람이 있습니까?
Michael Fever

내가 생각할 수있는 것은 서버 구성에 문제가 있다는 것입니다. rewrite모듈을 활성화 하고 디렉토리 설정을 AllowOverride All. 그 모든 것이 이미 준비되어 있고 당신이 언급 한 것이 사실이라면, 나는 Options All -Indexes다른 서버의 모든 프로젝트에서 일 하기에는 너무 운이 좋았을 것 입니다.
Fr0zenFyr

35

경우 Options -Indexes브라이언 Drewery 제안대로 작동하지 않습니다, 당신은 빈의 index.php 파일을 생성하는 재귀 적 방법을 작성할 수 있습니다.

보호하고 싶은 기본 폴더 안에 넣으십시오. 어떤 이름이든 지정할 수 있습니다 (index.php를 권장합니다)

<?php

recurse(".");

function recurse($path){
    foreach(scandir($path) as $o){
        if($o != "." && $o != ".."){
            $full = $path . "/" . $o;
            if(is_dir($full)){
                if(!file_exists($full . "/index.php")){
                    file_put_contents($full . "/index.php", "");
                }
                recurse($full);
            }
        }
    }
}

?>

이러한 빈 index.php 파일은 쉽게 삭제하거나 덮어 쓸 수 있으며 디렉토리가 나열되지 않도록합니다.


8
빈 파일이 그다지 큰 문제는 아니지만 더 나은 해결책은 심볼릭 링크 를 사용 하는 것입니다. 이렇게하면 약간의 공간이 절약되고 일종의 균일 한 메시지를 표시하도록 선택한 경우 파일 1 개만 수정하면됩니다. 빈 페이지 대신.
daalbert

18

금지 된 오류를 표시하려면 .htaccess 파일에 다음 행을 포함하십시오.

Options -Indexes 

파일을 색인화하고 몇 가지 정보와 함께 표시하려면 다음을 사용하십시오.

IndexOptions -FancyIndexing

특정 확장을 표시하지 않으려면 다음을 수행하십시오.

IndexIgnore *.zip *.css

1
.httaccess또는 .htaccess?
NaveenDA

8

옵션-인덱스 는 나에게 완벽하게 작동합니다.

다음은 .htaccess파일입니다.

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes <---- This Works for Me :)
    </IfModule>


   ....etc stuff

</IfModule>

이전 : 여기에 이미지 설명 입력

이후 :

여기에 이미지 설명 입력


4

두 가지 방법이 있습니다.

  1. .htaccess 사용 : Options -Indexes

  2. 빈 index.html 만들기


3
Options -Indexes

디렉토리 색인 목록을 허용하지 않으려는 현재 디렉토리에 .htaccess 파일을 만들어야합니다. 그러나 .htaccess 코드의 재귀에 대해 몰라 죄송합니다.

시도 해봐.


2

그것에 동의 해

Options -Indexes

기본 서버가 옵션 재정의를 허용하도록 구성된 경우 작동해야하지만 그렇지 않은 경우 목록에서 모든 파일을 숨 깁니다 (모든 디렉토리가 비어있는 것으로 표시됨).

IndexIgnore *

2

옵션 -Indexes 는 보호 된 디렉토리에 대해 403 금지 오류를 반환합니다. htaccess에서 다음 리디렉션을 사용하여 동일한 동작을 수행 할 수 있습니다.

RedirectMatch 403 ^/folder/?$ 

이것은 example.com/folder/에 대한 금지 된 오류를 반환합니다 .

mod-rewrite를 사용하여 폴더 요청을 금지 할 수도 있습니다.

RewriteEngine on

RewriteRule ^folder/?$ - [F]

금지 할 폴더에 htaccess가있는 경우 RewriteRule의 패턴을 ^ folder /? $ 에서 ^ $로 변경 합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.