.htaccess를 사용하여 하위 폴더 및 파일에 대한 액세스 거부

.htaccess를 사용하여 하위 폴더 및 파일에 대한 액세스 거부

특정 하위 폴더 아래의 구성 파일에 대한 액세스를 거부해야 합니다. 현재 이 규칙이 있지만 작동하지 않습니다.

<Files ~ "((foo|bar))$">
  Order deny,allow
  Deny from all
</Files>

에 가면 www.mysite.com/foo/foo2/file.xml파일을 볼 수 있어요. foo모든 파일 액세스를 재귀적으로 거부해야 합니다.bar

고쳐 쓰다

이 구성을 시도했지만 내부 오류가 발생합니다.

<FilesMatch ".foo\.(*)$">
    Order Allow,Deny
    Deny from all
</FilesMatch>

답변1

" <Files>[...]는 지정된 파일 이름과 일치하는 기본 이름(파일 이름의 마지막 구성 요소)을 가진 모든 개체에 적용됩니다." 당신이 원하는 것이 아닌가요?

Directory*작동 안함.htaccess

예를 들어 다음을 사용해야 합니다 mod_rewrite.

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteRule ^(foo|bar) - [F]
</IfModule>

답변2

파일 지시문 대신 위치를 사용해 보십시오.

<Location "path/to/folder-or-file">
    Order Allow,Deny
    Deny from all
</Location>

답변3

아파치 구성에서 정규식 일치를 수행하겠습니다. 그 다음에

  • <DirectoryMatch>대신 사용하십시오 <File>(디렉토리에서 정규식 일치를 수행 중입니다).
  • 정규식의 엄격함을 수정하세요(구체적으로 $).
  • 정규식을 단순화하세요(괄호가 너무 많음).

    <DirectoryMatch "/path/to/toplevel/(foo|bar)">
        Order deny,allow
        Deny from all
    </DirectoryMatch>
    

이는 /path/to/toplevel/WWW 디렉터리가 있는 파일 시스템 위치입니다.foobar


그러나 를 통해서만 이 작업을 수행하려면 다음 .htaccess위치 .htaccess에 파일을 만드십시오.모든거부하려는 디렉토리(foo, bar, foo/bar 등)를 입력하고 다음 줄을 입력하세요.

Deny from all

안에.

관련 정보