一些mod重写的图像没有加载。为什么?

时间:2011-04-08 17:02:29

标签: php apache .htaccess mod-rewrite url-rewriting

  

example.com/thumb/AWg7X9Ko5hA_default.png

例如它正在工作....

但是

  

example.com/thumb/m0bt_9Qiznc_default.png

不是..为什么不呢?

当我访问

  

example.com/thumb/media.php?id=m0bt_9Qiznc&type=default

它有效。

这是我使用的htaccess代码:

RewriteEngine on
RewriteBase /
RewriteRule ^thumb/([^_]*)_([^_]*)\.png$ /thumb/script.php?id=$1&type=$2 [L]

和script.php:

$media_type = $_REQUEST['type'];
$the_id=$_REQUEST['id'];
if ($media_type=="big") 
{
header('Content-type: image/png');
readfile("http://i4.ytimg.com/vi/$the_id/0.jpg");
}
elseif ($media_type=="default") {
header('Content-type: image/png');
readfile("http://i4.ytimg.com/vi/$the_id/default.jpg"); }

2 个答案:

答案 0 :(得分:1)

您的RewriteRule仅允许以下划线分隔的两个部分:

 RewriteRule ^thumb/([^_]*)_([^_]*)\.png$

但您的网址

 example.com/thumb/m0bt_9Qiznc_default.png
                     ^     ^      ^
                     1 _   2  _   3

因此,您可能希望将第一个[^_]*更改为仅.*以获得更广泛的匹配。或者使用:

 RewriteRule ^thumb/([^/]+)_([^_]*)\.png$

答案 1 :(得分:1)

这是下划线。

正则表达式只允许一个下划线,但第二个文件名中有两个下划线。