2012-03-23 40 views
1

我正在研究用户可能访问存储在服务器根目录下的文件夹(本例中为PDF文件)的问题的解决方案。通常,我的应用程序通过PHP脚本和会话验证用户。目前没有发生的事情是阻止未登录的用户访问PDF。通过使用mod_rewrite检查当前PHP会话来保护图像不受直接访问的影响

我正在寻找的解决方案(我认为)需要与Apache捆绑在一起。我看到一个有趣的解决方案,使用RewriteMap & RewriteRule,然而这个例子涉及将这个文件放在PDF目录中的.htaccess文件中。无法用Apache做到这一点(错误:这里不允许RewriteMap)。我相信重写指令需要放在我可以访问的httpd.conf中。

所以(即导致 'RewriteMap指令这里不允许')我发现的例子是在这里: RewriteEngine叙述在 RewriteMap指令AUTH PRG:auth.php 重写规则$(*){AUTH:$ 1}

auth.php只检查PHP会话并在需要时重定向到登录脚本。

我在读我必须把它放在我的httpd.conf中。我该如何指定RewriteMap应该只出现在特定的目录(包括子目录)?

+0

从MVC模式借款,您可以将所有请求重定向到引导文件,然后根据权限您可以加载请求的文件或默认文件。 – Moses 2012-03-23 22:42:50

+0

@摩西 - 这就是我在这里或多或少去的地方。自从发布我的问题以来,我没有时间研究/测试apache配置 - 所以我仍然坚持如何正确重定向流量。 – 2012-03-29 17:36:34

回答

0

1,确保你必须直接在httpd.conf中。在Debian系统,例如,你有1个文件通过虚拟主机(一个虚拟主机通常是网站) 所以,你必须把你的RewriteMap指令在“目录”是这样的:

<Directory /full/path/to/your/pdfs> 
    RewriteEngine on 
    ... 
</Directory>