RewriteCond:如果图像存在然后显示它,否则生成它

时间:2015-05-19 17:14:52

标签: php regex .htaccess mod-rewrite

我有一个小的PHP脚本,可以为论坛签名生成图像(GD)。要打电话给他们,有一个网址:http://www.example.net/img/imgtype_NN.png

其中: - imgtype是我想要的签名类型 - NN是图像的ID

当我调用此url时,我想测试目录中是否已存在该图像(即,是否已经生成),在这种情况下我想显示它。

否则我希望我的脚本生成它然后显示它。

这是我的实际.htaccess:

RewriteCond %{REQUEST_URI} img/(.*)_(.*).png$
RewriteCond %{DOCUMENT_ROOT}/signatures/img/%1_%2.png -f
RewriteRule img/(.*)_(.*).png$ /signatures/img/$1_$2.png [L]

RewriteRule img/(.*)_(.*).png /signatures/signatures.php?signature=$1&id_pop=$2 [L]

图像存储在example.com/signatures/img/中,php脚本位于example.com/signatures/signatures.php

经过几个小时的尝试后,我不能完全得到我需要的东西,现在我放弃了,我需要一些帮助。

谢谢你们!

1 个答案:

答案 0 :(得分:2)

嗯,你的代码不是最好的,所以也许你的问题是由于一些语法错误造成的 无论如何,你可以试试这个版本(把这段代码放在 root htaccess中)

RewriteEngine On

RewriteCond %{DOCUMENT_ROOT}/signatures/img/$1_$2\.png -f
RewriteRule ^img/(.+)_(.+)\.png$ /signatures/img/$1_$2.png [L]

RewriteRule ^img/(.+)_(.+)\.png$ /signatures/signatures.php?signature=$1&id_pop=$2 [L]

确保您已启用 mod_rewrite 并在Apache配置中允许htaccess