我试图阻止在记录的会话之外访问文件。所有文件和文件夹都位于名为 _memberFiles 的目录下。例如:
/_memberFiles/user1/myphoto.jpg
/_memberFiles/user1/docs/resume.pdf
我想避免以HTML src="/_memberFiles/user1/myphoto.jpg"
格式显示的链接,所以我写了以下内容:
RewriteCond %{QUERY_STRING} (.*)
RewriteRule ^_get/$ /_memberFiles/getcontent.php?key=%1
并将链接更改为src="/_get/?St8ujsfYDXECuvnMCIJwukS%2FSPZWkFttVqi9mwoREzjsche4bDk9"
St8ujsfYDXECuvnMCIJwukS%2FSPZWkFttVqi9mwoREzjsche4bDk9
是加密内容,基本上是/user1/myphoto.jpg
php文件将处理加密密钥,构建文件路径并返回内容:
header('Content-type: '.mime_content_type($DecruptedFullFilePath)));
readfile($DecruptedFullFilePath);
一切正常。 但是任何人仍然可以转到/_memberFiles/user1/myphoto.jpg
并转到文件。
我正在尝试将/_memberFiles/
的任何流量转到/_memberFiles/getcontent.php?key=%1
,到目前为止我无法让它工作。这是我最近的尝试:
-- capture query string (or none)
RewriteCond %{QUERY_STRING} (.*)
-- any request with _get goes to _memberFiles passing parameters
RewriteRule ^_get/$ /_memberFiles/%1
-- any request with _memberFiles should go to .php with parameters
RewriteRule ^_memberFiles/$ /_memberFiles/getcontent.php?key=%1
请帮助教育我!