0
하위 디렉토리와 파일을 만들고 저장하는 디렉토리 ("files")가 있습니다. 디렉토리는 "옵션 색인"을 사용하여 디렉토리 목록을 전달해야하지만 사용자가 인증되고 권한이 부여 된 경우에만 전달해야합니다. 다음 부분을 수행하여 해당 부분을 만들고 작동시킵니다."options indexes"와 함께 사용하는 mod_rewrite
<Directory /var/www/html/files>
Options Indexes
IndexOptions FancyIndexing SuppressHTMLPreamble
HeaderName /includes/autoindex/auth.php
</Directory>
이제 파일 전송을 처리해야합니다.
RewriteCond %{REQUEST_URI} -f
RewriteRule /files/(.*) /auth.php
나는 또한 시도 : 두 지시어 auth.php에 리디렉션되지 않습니다
RewriteCond %{REQUEST_URI} !-d
RewriteRule /files/(.*) /auth.php
내가 요청할 때 :
foo.com 파일에 대한 인증을 강제로, 나는 다음과 구축 /files/bar.pdf
foo.com/files/baz/bar.pdf
아이디어가 있습니까? 이것이 문제입니다,하지만 난 이것에 대한 REQUEST_FILENAME
을 사용하고로 캡처 (.*)
의 가치를 원한다면하지 REQUEST_URI
RewriteEngine on
REQUEST_URI를 REQUEST_FILENAME으로 변경하고 정규 표현식의 처음에 ^를 추가 한 다음 다시 작성 규칙의 끝에 "[NC, L]"을 추가했습니다. 요청 된 파일을 쿼리 문자열 param으로 전달할 필요가 없습니다. PHP가 SERVER superglobal을 통해이를 캡처 할 수 있기 때문입니다. "foo.com/files/bar/baz.pdf"에서 "-f"플래그를 사용할 때 mod_rewrite를 트리거 할 수 없습니다. "! -d"로 전환하면 mod_rewrite가 "foo.com/files/bar/baz.pdf"를 트리거하지만 "원하지 않는"foo.com/files/bar/에도 트리거합니다. – Travis