是否可以让 apache 调用另一个可执行文件或脚本来检查访问限制?
我正在尝试做的是实现一种调用脚本的方法,该脚本可以检查文件系统文件权限以外的限制(例如:检查请求是否包含有效的 PHP 会话 cookie),并以某种方式告诉 apache,如果不允许访问请求的文件,它必须返回 403 错误代码(例如: 通过返回 0 以外的退出代码)。
过去,我使用PHP脚本来处理图像文件的请求并处理访问限制。问题是我还必须以编程方式设置所有标头,这并非易事(例如:如果要支持 304 响应,代码必须检查文件的修改时间并将其与响应中规定的时间进行比较,或者选中"etags"等)。我想找到一种方法来避免所有这些麻烦,让 apache 处理"标头部分"和另一个脚本/二进制来处理"访问部分"。
提前感谢您的任何帮助!!
prg: RewriteMap
,并在程序返回"NULL"后禁止访问RewriteRule
。如果你打算使用一个php脚本,你可以打开php://stdin
,从中读取一个传入的Cookie:
头,并确定它是否是你想要允许的会话。在原版 php 会话中检查这些会话的问题在于,您几乎必须启动该会话才能弄清楚:确保您具有加载或可自动加载所需的所有可能的类定义,调用 session_id('the id you found in the cookie');
、session_start()
、检查$_SESSION
,然后再次编写session_write_close()
。存在各种危险(如果您的类未正确加载,会话中断,如果您的 php 脚本意外死亡,则会出现错误等)。
如果你控制了你的Apache服务器,我更喜欢mod-xsendfile:打开一个php脚本,php脚本设置要交付的图像的位置,剩下的mod-xsendfile
做,包括etag,修改时间等。然后,如果您愿意,您甚至可以将"受限"内容存储在文档根目录之外(但请检查您交付的内容是否是您想要交付的内容,而不是磁盘上的某个随机文件)。