2016-12-08 1 views
1

"assets/output//"디렉토리에있는 모든 원래 파일 이름에 대한 액세스를 거부하려고합니다. "assets/output/3342/45.jpg"은 허용되며 "assets/output/3342/orignal.jpg"는 금지됩니다.

<Directory ^.*assets\/.*\/original.*\.*$> 
AllowOverride All 
order allow,deny 
deny from all 
</Directory> 

또한, 나는 /에/자산 .htaccess 파일에 유사한 배치 시도했다 : 나는 내 아파치/사이트-사용 가능한/의 .conf에 다음을 삽입 시도했습니다. 불행히도, 나는 REGEX를 잘못 생각한 것 같습니다. 분명히 이것은 https://regex101.com에 따라 작동하지만 실제로 실제로 작동하지는 않습니다. 제안? 고맙습니다.

+0

왜 거기에'Directory'가 허용되지 않으면'.htaccess'로 태그를 붙였습니까? – anubhava

+0

.htaccess를 사용하여 다른 솔루션을 시도하고있었습니다 (위와 정확히 일치하지 않음). 팁 주셔서 감사합니다. – mrheroux

답변

1

Directory 또는 Location 지시문은 .htaccess에 사용할 수 없습니다. 당신이 공유 호스팅에있는 아파치/가상 호스트 설정을 변경할 수없는 경우에 당신은 아파치 설정 및 htaccess로 모두에서 작동 규칙보다도 assets/output/.*/original

RewriteEngine On 

# comment below line if you want to block all URIs not just existing files 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule ^/?assets/output/.*/original(\..*)?$ - [F,NC] 

에 대한 액세스를 차단하기 위해이 규칙을 사용할 수 있습니다. 액세스가 필요한 경우 Apache 구성을 사용하십시오.

+1

그것은 효과가있다. 이 사람이 나를 걸러 냈습니다. 고맙습니다! :-) – mrheroux

+1

다른 사람들을위한 BTW - 이것을 /etc/apache2/sites-avaliable/*.conf에두고 서버를 다시 시작했습니다. – mrheroux

0

여기에는 논리적 인 문제가 있습니다. <Directory ...> 지시문을 사용하는 경우 정규 표현식이 아니라 경로 인이 인수로 필요합니다. 당신은 같은 맥락에서 정규 표현식을 사용할 수 있지만, 당신은 물결표 문자 (~)와 함께 앞에 추가하여 있도록에게 HTTP 서버에게 에 있습니다

<Directory ~ "^/.*assets/.*/$"> 
    RewriteEngine on 
    RewriteRule "^/.*assets/.*/original" "-" [F] 
</Directory> 

설명되어 있습니다 : http://httpd.apache.org/docs/current/mod/core.html#directory

+0

작동하지 않았습니다. 나는 또한 생각하고있다, 나는 대신에 사용해야한다? – mrheroux

+0

죄송합니다. 내 잘못, 세부 사항을 자세히 조사하지 않았습니다. 나는'Directory' 지시어가 실제로 _folder_를 참조 할 때처럼'RewriteRule'을 안에 넣어 특정 파일에 대한 접근을 거부하도록 답변을 수정했다. – arkascha