.htaccess将图像文件重写为php脚本

时间:2012-03-14 14:27:29

标签: .htaccess mod-rewrite apache2 rewrite

以下是我现在在.htaccess中所拥有的内容,这将来会有效:

RewriteEngine On

RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

问题是:

如何进行重写/tmp/some_image.png -> /image.php?file=some_image.png

我试图制定自己的规则,但没有成功。

感谢。

2 个答案:

答案 0 :(得分:14)

/ tmp是您的网络服务器可以访问的目录吗?我希望它是一个单独的/ tmp文件夹而不是服务器的实际/ tmp,因为这会带来安全风险。

无论如何,如果图像是一个物理文件,那么你需要在重写之后将其放入以强制HTTPS并在条件检查之前检查它是否是文件或目录:

RewriteRule ^/tmp/([^\.]+)\.png$   /image.php?file=$1.png [NC,L]

您也可以检查其他扩展程序:

RewriteRule ^/tmp/([^\.]+)\.(png|jpg|gif)$    /image.php?file=$1.$2 [NC,L]

或者,如果你不在乎(一切都是你的tmp文件夹中的图像。虽然我不推荐这个)

RewriteRule ^/tmp/(.*)$    /image.php?file=$1 [NC,L]

如果它不是物理文件,您可以在规则的最后添加其中任何一个。

答案 1 :(得分:-1)

正确答案是:

RewriteRule ^/?tmp/(.*\.png)$ captcha.php?file=$1 [L]

thx转到Humbedooh@freenode