PHP:处理动态文件请求
我正在开发一个Web应用程序,其中所有图像请求都将由PHP:处理动态文件请求,php,html,.htaccess,dynamic,Php,Html,.htaccess,Dynamic,我正在开发一个Web应用程序,其中所有图像请求都将由index.php页面直接处理。例如,如果请求文件image1.png,它将被重定向到index.php,其中显示image1.png文件的详细信息 我编写了一些代码,用于在文件名作为GET参数传递到index.php文件时显示文件的详细信息 但我不确定如何捕获所有图像文件请求并将它们重定向到index.php,同时通过GET将请求的文件名作为参数传递 任何帮助都将是巨大的。:) 在文档根目录的.htaccess文件中尝试以下操作: Rewri
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 (.+\.(png|jpg))$ index.php?file=$1 [L]
编辑:要路由所有非PHP文件,可以执行以下操作:
RewriteCond %{REQUEST_URI} (.*)
RewriteRule !\.php$ index.php?file=%1 [L]
对于所有非PHP文件(注意带有!
前缀的否定正则表达式),请求被重写,并将请求的URL传递到index.PHP
。请注意,被否定的正则表达式不能包含捕获组,因此需要单独的条件
请注意,这包括斜杠前缀(因为它是作为
REQUEST\u URI
变量的一部分包含的),而上面的示例没有包含斜杠前缀。您可以编辑帖子并显示代码吗?老实说,我不知道如何处理动态请求:(你所说的动态请求到底是什么意思?@DivyeshSavaliya除了.php
之外的任何直接文件请求都应该重定向到'index.php',并将文件名作为其参数。你能发布你的代码或示例吗?因此我们将为你提供一个很好的答案谢谢你,它很有效,但我能以同样的方式重定向所有非php文件请求吗?不完全一样,因为“所有非php”文件需要一个否定的正则表达式-我将用一个例子更新我的答案。刚刚更新/修复了RewriteCond
以包含括号(捕获组)另一种方法是简单地重写为index.php
,而不是index.php?文件=%1
。然后,在php中,您可以从$\u服务器['REQUEST\u URI
]获取请求的(非php)URL`超级全局而不是URL参数。这很好,但是这两种方法之间有性能差异吗?