PHP:处理动态文件请求

时间:2016-01-05 12:42:11

标签: php html .htaccess dynamic

我正在开发一个Web应用程序,其中所有图像请求都由index.php页面直接处理。例如,如果对文件image1.png发出请求,则会将其重定向到index.php,其中会显示image1.png文件的详细信息。

当文件名作为GET参数传递给index.php文件时,我编写了用于显示文件详细信息的代码。

但我不确定如何捕获所有图像文件请求并将它们重定向到index.php,同时通过GET将请求的文件名作为参数传递。

任何帮助都会很棒。 :)

1 个答案:

答案 0 :(得分:2)

在文档根目录中的.htaccess文件中尝试以下操作:

RewriteEngine On
RewriteRule (.+\.png)$ index.php?file=$1 [L]

在内部将所有.png个文件重写为index.php,并将完整的URL作为URL参数传递。 (虽然这显然不包括斜杠前缀。如果需要,您可以手动包含它。例如。?file=/$1。)

要扩展此项以包含.jpg个文件,请更改RewriteRule模式:

RewriteRule (.+\.(png|jpg))$ index.php?file=$1 [L]

编辑:要路由所有非PHP文件,您可以执行以下操作:

RewriteCond %{REQUEST_URI} (.*)
RewriteRule !\.php$ index.php?file=%1 [L]

对于所有非PHP文件(请注意带有!前缀的否定正则表达式),请求将被重写,并将请求的URL传递给index.php。请注意,否定的正则表达式不能包含捕获组,因此需要单独的条件。

请注意,这包括斜杠前缀(因为它包含在REQUEST_URI变量中),而上面的示例没有。