我正在开发一个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
变量的一部分包含的),而上面的示例没有。