我有一个目录(“files”),其中将创建子目录和文件并随时间存储。这些目录还需要使用“选项索引”来提供目录列表,但前提是用户经过身份验证和授权。通过执行以下操作,我构建并工作了该部分:
<Directory /var/www/html/files>
Options Indexes
IndexOptions FancyIndexing SuppressHTMLPreamble
HeaderName /includes/autoindex/auth.php
</Directory>
现在我需要处理文件传递。为了强制对文件进行身份验证,我构建了以下内容:
RewriteCond %{REQUEST_URI} -f
RewriteRule /files/(.*) /auth.php
我也尝试过:
RewriteCond %{REQUEST_URI} !-d
RewriteRule /files/(.*) /auth.php
当我请求时,两个指令都没有重定向到auth.php:
foo.com/files/bar.pdf
foo.com/files/baz/bar.pdf
想法?
答案 0 :(得分:0)
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^/files/(.*) /auth.php?file=$1 [NC,L]
REQUEST_FILENAME
而不是REQUEST_URI
RewriteEngine on
(.*)
的值传递给脚本,则需要使用$1
^
,以确保您匹配/files/blah.txt
,而不是/foo/files/blah.txt
。 [NC,L]
告诉Apache使用不区分大小写的匹配并停止处理此匹配的规则。