2011-12-30 1 views
45

최근에 프로젝트를 정리하고 있습니다. 루트 디렉토리에 6 개의 다른 .htaccess 파일이있다. 그들 중 5 명은 Options -Indexes을 돌 렸는데 나는 어떤 디렉토리보기도 허용하지 않는 것을 본다. 그래서 지금은 2 개의 .htaccess 파일 만 가지고 있습니다. htaccess <Directory> 모두에서 거부

# Block External Access 
deny from all 

그래서 난 단지 주 내에서 /system에 그것을 실행하고 싶었 보유 /system의 주요 하나. 그래서 난에/시스템을 삭제하고 내 주요 htaccess로 파일이 1을 떠나기

# Block External Access 
<Directory "/system/"> 
deny from all 
</Directory> 

을 추가!

하지만 지금은 서버에 내부 오류 또는 잘못된 발생하여 요청을 완료 할 수 없습니다

내부 서버 오류를 얻을.

서버 관리자에게 webmaster @ localhost 및 에게 오류가 발생한 시간과 오류가 발생했을 수있는 내용 ( )을 알려주십시오.

이 오류에 대한 추가 정보는 서버 오류 로그에 있습니다.

아파치/2.2.17 (우분투) 서버 10.0.1.5 포트 80

목표에/시스템의 모든 파일을 읽을 차단하는 것입니다 그것은 하위 디렉토리의이다 그러나 1 .htaccess에서 다른 모든 모든 것을 볼 수 있도록 전체 프로젝트에 대한 파일. 어떻게 해결할 수 있을지에 대한 아이디어가 있습니까? 나는 몇몇 구글 검색을했으나 실제로는 아무 것도 나오지 않았다.

답변

74

.htaccess에서 Directory directive을 사용할 수 없습니다. 당신은/시스템 디렉토리에 htaccess로 파일을 만들고 그 안에 다음을 배치하지만, 당신은 동일한 결과

#place this in /system/.htaccess as you had before 
deny from all 
을 얻을 것이다 당신은 루트 디렉토리에서 사용할 수 있습니다
+3

예. 전에/system에 .htaccess를 넣었습니다. 전체 프로젝트에 하나만 사용하려고했습니다. 내가 그렇게 할 수 없으며 그렇게해야 할 것 같아. Windows 사용자의 경우 – Keverw

+0

인 경우 Windows 탐색기에서 파일 이름을 제거 할 수 없기 때문에 일부 텍스트 편집기에서 파일 이름으로 저장하여 파일 이름을 정확하게 .htaccess로 만드십시오. 나에게 문제가되었다. –

1

:

RewriteEngine On 
RewriteRule ^(?:system)\b.* /403.html 

또는 :

RewriteRule ^(?:system)\b.* /403.php # with header('HTTP/1.0 403 Forbidden'); 
9

RedirectMatch 지시문을 사용하여 폴더에 대한 액세스를 거부 할 수도 있습니다.

폴더에 대한 액세스를 거부하려면 htaccess로에서 다음 RedirectMatch에 사용할 수 있습니다 :

RedirectMatch 403 ^/folder/?$ 

이/폴더/예에 대한 외부 액세스를 금지합니다 http://example.com/folder/은 403 금지 오류를 반환합니다.

은 폴더 내의 모든 액세스를 거부하려면, 당신은이를 사용할 수 있습니다이 전체 폴더 예에 대한 액세스를 차단합니다

RedirectMatch 403 ^/folder/.*$ 

: http://example.com/folder/anyURI가 클라이언트에 403 오류 응답을 반환합니다.

관련 문제