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

问题描述:

我有一个小的PHP脚本,为论坛签名生成图像(GD)。打电话给他们有一个网址,如:http://www.example.net/img/imgtype_NN.pngRewriteCond:如果图像存在,然后显示它,否则生成它

其中: - imgtype是我想 签名的类型 - NN是

当我把这个网址我想测试,如果图像的ID该图像已经存在于目录中(即,如果它已经被生成),并且在这种情况下我想显示它。

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

这是我实际的.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

我不得不动因为他已经在检查现有文件(并重定向到index.php),所以在Wordpress之前有一些规则。所以现在它工作。 谢谢贾斯汀! – Cyc

那么,你的代码是不是最好的,所以也许你的问题是由于一些语法错误。
无论如何,你可以试试这个版本(把这个代码在你 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的并允许在htaccess的Apache配置

+0

其实我的代码工作... 50%的时间。我试过你的,但我不明白为什么第一个RewriteCond现在已经消失了。 (%{REQUEST_URI})。有了这段代码,它根本不起作用:) – Cyc

+0

'REQUEST_URI'在这里没用,因为你已经在'RewriteRule'中匹配它了。我真的很惊讶你的代码随机工作(50%的时间),这很奇怪。你有没有工作和非工作的网址的例子?另外,你的htaccess在根文件夹?你有其他规则吗?其他子文件夹中是否还有其他htaccess文件? –

+0

请注意,请求的网址是/img/___.png,但文件位于/ signatures/img /这就是为什么我添加了%REQUEST_URI。有没有工作和其他人的网址,但当我F5相同的网址有时它有时不工作。 – Cyc