2014-03-30 5 views
0

디렉토리의 와일드 카드에서 특정 파일과 일치시킬 수있는 방법에 대한 지침을 찾고 있습니다. 여기Apache - 모든 디렉토리의 파일

/path/to/folder1/directory/index.php 
/path/to/folder2/directory/index.php 
/path/to/folder3/directory/index.php 

만든 구성 예이다 : -

예는 규칙에 적용 할 필요가있다. 아이디어는이 파일에 액세스 할 경우 그들은 사용자 이름/암호를 입력하라는 메시지가 표시되어 있는지 확인하는 것입니다

<FilesMatch "/path/to/*/directory/index.php"> 
AuthName "Login" 
AuthType Basic 
AuthUserFile /path/to/.htpasswd 

제대로 동작하지 않는, 그러나 유효한 사용자에게

을 필요로한다.

편집

은 첫 번째 대답 응답 후, 나는 코드를 변경했습니다. 이것의 주된 목적은 누군가가 administrator/index.php 파일에 접근 할 때 mod_security를 ​​통해 사용자 이름과 패스워드를 물어 보는 것입니다. 관리자 디렉토리에 재귀 적으로 나타나는 다른 모든 index.php 파일은 다음과 같이 프롬프트되지 않아야합니다.

<Directory "/location/to/.*/administrator"> 
    <Files "index.php"> 
    AuthName "Login" 
    AuthType Basic 
    AuthUserFile /path/to/.htpasswd 
    require valid-user 
    </Files> 
</Directory> 

트릭을 수행합니까?

+0

을 네, 편집 예 이 경우에는'~'(또는 DirectoryMatch가없는)'. *'하지만'*'는 필요 없지만 와일드 카드는 정규 표현식이 아닌 globbing을 사용합니다. 조금 혼란 스러울 수 있습니다 ... – mata

+0

알았어요. 그건 효과가 있어요. 한 가지 더 많은 문제 - 실제로 사용자 이름/암호를 묻는 프롬프트의 URL에 /index.php를 넣어야합니다. 웹 사이트/관리자 /를 입력해도 프롬프트 할 수있는 방법은 없습니까? –

+0

당신은 단지 파일 지시자를 생략하고 직접 디렉토리 섹션에 auth 디렉토리를 넣을 수 있습니다. 그런 다음 전체 관리자 디렉토리에 비밀번호가 필요합니다. 유스 케이스에 많은 차이를 가져서는 안된다. – mata

답변

0

<Files> 지시문과 마찬가지로 <FilesMatch> 지시문은 전체 경로가 아닌 파일의 기본 이름에서만 작동하므로 경로 이름을 지정하면 작동하지 않을 수 있습니다. 하지만 말했듯이 - 다른

는 즉, FilesMatch 그래서 "path/*"은 실제로 당신이, 표준이 "path/.*" 일 것입니다 무슨 슬래시의 임의의 수, 다음 path 일치하는 것이다 (<FilesMatch "expression">는 기본적으로 <Files ~ "expression">과 동일) 기본적으로 정규 표현식을 사용하여 경로는 FilesMatchFiles과 함께 작동하지 않습니다.

하지만 공통 기본 디렉토리에 .htaccess 파일을 넣을 경우 (이 나중에 오버라이드 (override)하지 않는 이상), 모든 하위 디렉토리에 적용 할 수 있도록 지침은 이미 모든 하위 디렉토리에 적용

<Files "index.php"> 
    ... 
</Files> 
+0

답장을 보내 주셔서 감사합니다. 그것은 모든 디렉토리에서 .htaccess 파일을 만드는 데 상당한 작업이 필요합니다. 그래서 실제 apache 서버 설정에서 하나의 포괄적 인 규칙을 만들려고합니다. 본질적으로, 나는 서버의 모든 웹 사이트에서 Joomla 용 administrator/index.php 파일에 액세스하는 모든 사용자의 사용자 이름/암호를 요구하고 싶습니다. –

+0

경로가 [Allow from env]와 일치하면 [SetEnvIf] (http://httpd.apache.org/docs/2.2/mod/mod_setenvif.html#setenvif)를 결합하여 환경 변수를 설정하는 것이 가장 쉬운 방법이라고 생각합니다. = ...] (http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html#allow) - 적어도 서버 설정에 액세스 할 수없는 경우. 그렇지 않으면''지시어 shoudl이 트릭을 수행합니다. – mata

+0

감사합니다. 나는 웹 서버 설정을 할 수있는 모든 권한을 가지고 있으므로 웹 서버를 운영한다. 그것이 바로 제가하려는 일입니다 - 보편적 인 요구 사항을 만드십시오. –

관련 문제