我正在开发一个Web应用程序,其中所有图像请求都由index.php
页面直接处理。例如,如果对文件image1.png
发出请求,则会将其重定向到index.php
,其中会显示image1.png
文件的详细信息。
当文件名作为GET参数传递给index.php
文件时,我编写了用于显示文件详细信息的代码。
但我不确定如何捕获所有图像文件请求并将它们重定向到index.php
,同时通过GET将请求的文件名作为参数传递。
任何帮助都会很棒。 :)
答案 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
变量中),而上面的示例没有。