RewriteRule不能正常工作

时间:2012-10-10 18:12:49

标签: php html .htaccess mod-rewrite

我有一个小问题。 我有一个图像的颜色自定义代码,我使用RewriteRule缩短它:

RewriteRule ^cc-(.*?)-(.*?)\.png$ cc.php?col1=$1&col2=$2 [L]

当我输入localhost / Gen / cc-1122ff-ffffff.png时,它通常会为我打开。 但是,当我想用​​PHP向这个生成的图片添加文本时,我使用了另一个RewriteRule:

RewriteRule ^sig,(.*?),(.*?),(.*?),(.*?),([^,]+),(.*?),([^,]+)\.png$ test.php?nam=$6&font=$5.ttf&bg=$7.png&gn=$1&badg=$2&typ=$3&itm=$4 [L]

我转到此链接:localhost / Gen / sig,y,y,mem,no,Pixel,test,cc-1122ff-ffffff.png 我收到这个错误:

Warning: imagecreatefrompng(cc-1122ff-ffffff.png): failed to open stream: No such file or directory in D:\Xampp\htdocs\Gen\test.php on line 31

第二个RewriteRule通常有效,例如localhost / Gen / sig,y,y,mem,no,Pixel,test,white.png 第二个RewriteRule不适用于第一个RewriteRule。为什么呢?

1 个答案:

答案 0 :(得分:1)

当URL是相对的时,

imagecreatefrompng不会发出HTTP请求(如cc-1122ff-ffffff.png);它将其视为文件路径。

如果您将网址设为绝对网址,例如localhost/Gen/sig,y,y,mem,no,Pixel,test,http%3A%2F%2Flocalhost%2FGen%2Fcc-1122ff-ffffff.png,则imagecreatefrompng会将其视为网址,而不是文件路径。