当从某个目录请求文件时,运行PHP脚本


Run PHP script when file from a certain directory are requested

我刚刚写了一些PHP代码,将我网站上的所有JS组合成一个文件,散列它,然后用散列文件名作为源回退<script>标记。我将所有这些散列文件存储在一个文件夹中,并在每次生成新散列时删除旧的散列。

我希望能够打开这个文件的缓存,因为散列文件名决定了浏览器何时需要下载一个新文件(IE:它请求的实际URL是不同的)。有人知道如何在PHP中钩入这个请求吗?比如:

if ($_GET['folder'] = "path/to/hashed/folder/or/file")
{
    //Do something
}

除非你用PHP提供JavaScript,否则你不能钩入请求。但是,您不需要使用PHP设置缓存头。您可以配置您的web服务器来直接执行此操作。如何做到这一点取决于您使用的服务器。

您要使用的是一个名为.htaccess的文件。下面是一个简单的规则,它通过一个文件发送所有内容,这里名为index.php。

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !^/some_file_that_you_want_to_exclude_from_this_rule
RewriteCond %{REQUEST_URI} !^/some_other_file_that_you_want_to_exclude_from_this_rule
RewriteRule ^(.*)$ index.php [L]

完整的URL将在$_SERVER['REQUEST_URI']中,$_SERVER中的其他变量将指向其他信息($_SERVER['REDIRECT_URL']不包括主机名)。