【发布时间】:2012-04-14 15:19:22
【问题描述】:
我正在尝试创建一个网站,授权用户可以在其中下载 pdf 文件... pdf 文件在 webroot 中 auth 是通过 php 会话...
为了防止文件被盗链,我找到了一个可行的解决方案
php: 在成功登录时写入一个名为 session id 的新文件:
if($logged_in) {
touch('auths/' . session_id());
}
然后 .htaccess 检查会话 id 文件是否存在,如果文件不存在,则重定向到登录..
# checks if a file named
RewriteCond %{HTTP_COOKIE} PHPSESSID=(\w+)
RewriteCond %{DOCUMENT_ROOT}/auths/%1 -f
RewriteRule ^(.*)$ $1
RewriteRule /* /login.php [L]
到目前为止,这是有效的,做了一个简单的测试环境....
问题是这需要与使用以下 .htaccess 的 cakephp 应用程序结合使用:
# CakePHP
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [QSA,L]
</IfModule>
所以我的问题是如何修改 .htaccess,所以它只检查请求是否为 *.pdf 并且还与 cakephp 规则一起使用...
谢谢!!
【问题讨论】:
-
您的应用程序使用 ACL 吗?
标签: .htaccess cakephp mod-rewrite