PHP:处理动态文件请求


PHP: Handling Dynamic File Request

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

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

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

任何帮助都会很好。:)

在文档根目录的.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变量的一部分包含的),而上面的示例没有。