2010-07-29 77 views
4

我正在寻找一种方法来告诉Apache,如果有来自某个目录的文件请求,它应该首先运行一个php脚本来验证用户是否登录。 我知道我可以把目录放在docroot之外,让一个php脚本处理认证和文件下载,但是因为这些是试图打开其他flash文件的flash文件,它必须是docroot中的一个目录,并且这些文件不应该由php脚本发送。 在旧的设置中,我们使用mod_auth_script(http://sourceforge.net/projects/mod-auth-script/),但由于这是一个相当模糊的apache模块,我宁愿有一个更常用的解决方案,如果可能的话。在php/apache中使用身份验证脚本保护目录中的文件

回答

6

您可以使用.htaccess和mod_rewrite将请求重定向到php脚本。尝试一些谷歌搜索,你会发现很多的例子。

的.htaccess内容例如:

Options +FollowSymLinks 
RewriteEngine on 
RewriteRule ([0-9a-z-_]+)\.swf$ checkForAuth.php?&file=$1 [L] 

这将调用checkForAuth.php当有人将尝试访问* .swf文件。在checkForAuth.php中,您需要检查会话,从$ _GET ['file']中读取内容,设置正确的头文件(content-type for flash)并输出所请求的SWF文件的内容。

+0

以及我不想重定向,因为Flash文件需要直接访问。 Apache应该检查用户是否可以访问该目录(使用基于PHP的身份验证来检查会话),就是这样。否则,启动闪存文件无法访问其他闪存文件 – Maarten 2010-07-29 08:59:10

+0

重定向将不会在用户端看到。 URL将保持不变,但内容将通过将检查会话的PHP文件给出。 – 2010-07-29 09:02:18

+0

啊对,所以Flash文件仍然只会请求/files/foo.swf ..请求链接太多了吗? – Maarten 2010-07-29 09:05:24

相关问题