.htaccess存根文件用php session auth保护站点

时间:2012-03-30 23:07:18

标签: .htaccess cakephp mod-rewrite

我正在尝试创建一个授权用户可以下载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规则一起工作......

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为组合.htaccess和CakePHP不会很好。两者都是不同类型的软件,没有本机通信方法。在为Apache编写自己的模块之前,我认为你不会做出好的解决方案。在你的地方我宁愿把整个文件读成变量,而不是用合适的标题打印它。一种内存昂贵的解决方案,但安全,独立于服务器,将来很容易修改。