0

如何将 PHP 查询 url 重写为实际图像?

我想将http://localhost/img.php?image=winter.jpg重写为http://localhost/img/winter.jpg图像名称会动态变化。

我试过这样,但它不起作用。

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.+img\.php\?.*?image\=(.+)[$&] ./img/$1 [NC]

谢谢。

[更新]

访问http://localhost/img.php?image=winter.jpg后,以下文本被附加到日志文件中。浏览器显示消息“未找到对象!在此服务器上未找到请求的 URL。如果您手动输入了 URL,请检查您的拼写并重试。”

127.0.0.1 - - [<time>] [localhost/sid#975148][rid#4d09cb8/initial] (3) [perdir Z:/xampp/htdocs/] strip per-dir prefix: Z:/xampp/htdocs/img.php -> img.php
127.0.0.1 - - [<time>] [localhost/sid#975148][rid#4d09cb8/initial] (3) [perdir Z:/xampp/htdocs/] applying pattern '^.+img\.php\?.*?image=(.+)[$&]' to uri 'img.php'
127.0.0.1 - - [<time>] [localhost/sid#975148][rid#4d09cb8/initial] (3) [perdir Z:/xampp/htdocs/] pass through Z:/xampp/htdocs/img.php

[更新]

错误日志说,

[<time>] [error] [client 127.0.0.1] script 'Z:/xampp/htdocs/img.php' not found or unable to stat

所以我创建了一个名为的虚拟文件img.php,并且错误声明不再显示。我假设不需要一个虚拟文件。现在它只在我访问http://localhost/img.php?image=winter.jpg时显示虚拟 PHP 文件的内容

我试过[NC,L], [R,NC][R,NC,L]但没有一个有效。

4

2 回答 2

2

这应该有效。可能需要重新启动浏览器。

RewriteEngine on
RewriteCond %{QUERY_STRING} ^image=(.*)$
RewriteRule ^.*img\.php$ ./img/%1 [NC,QSA]

相关:图像+字符串到图像文件夹重写的mod重写规则

于 2012-10-08T02:41:10.377 回答
1

你没有重定向。添加重定向标志,最后尝试[R]

RewriteRule ^.+img\.php\?.*?image\=(.+)[$&] ./img/$1 [R,NC]
                                                      ^ 
于 2012-10-07T13:17:00.083 回答