我正在尝试创建一个授权用户可以下载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]
到目前为止,这是一个简单的测试环境....
问题是这需要与使用以下内容的cakephp应用程序结合使用.htaccess:
# 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规则一起工作......
谢谢!
答案 0 :(得分:0)
我认为组合.htaccess和CakePHP不会很好。两者都是不同类型的软件,没有本机通信方法。在为Apache编写自己的模块之前,我认为你不会做出好的解决方案。在你的地方我宁愿把整个文件读成变量,而不是用合适的标题打印它。一种内存昂贵的解决方案,但安全,独立于服务器,将来很容易修改。