2011-03-31 80 views
1

我有一个重定向设置,在目录中查找图像,如果它不存在,它将重定向到一个php文件,它调整图像大小并保存它到那个目录。我把它做得很好。现在的问题是,如果写入的图像是4个小时,我需要找到一个重定向它的好方法。我看着Mod_expires,但无法找到一种方式来重定向到我的PHP图像大小调整器时,图像是4个小时。如何使用.htaccess在目录中重定向或mod_rewrite过期的图像

我知道我可以在PHP中做到这一点,但重点是通过使用Apache而不是PHP来减少服务器负载。我正在研究的网站每天都有数千观众收看,所以我真的需要高效地缓存已调整大小的图片。下面是我在做什么的例子...

  1. 浏览器请求“http://images.mydomain.com/image/1234_01_thumb.jpg”
  2. 阿帕奇检查,如果“HTTP://图像。 mydomain.com/image/1234_01_thumb.jpg”存在
  3. 如果它不存在,重定向到以‘/image/resize_image.php’并生成缩略图‘/图片/’文件夹现在

我得到了这个工作,当“1234_01_thumb.jpg”变成x小时后,我该如何将它重定向到“/image/resize_image.php”?在某些时候,有人会更新该照片,尤其是如果他们上传了错误的照片,所以不能永久保存。

请帮忙。提前致谢!

回答

1

http://php.net/manual/en/function.exif-read-data.php

你可以得到文件的日期,然后检查,对当前time()

说这样的事情:

$img_head = exif_read_data($img_path, 'IFD0'); 
if ($img_head != false) { 
    if ($img_head['FILE.FileDateTime'] < (time() - 14400)) { 
    header ("Location: old_image.php"); 
    exit; 
    } 
} 

我真的希望你明白我试图在这里说,因为我从我的电话打字...

+0

谢谢Chris,我以前已经考虑过这个解决方案。问题是现在我在PHP生成的/ image /文件夹中有一个图像,如果请求的图像是旧的,我需要apache重定向回image_resize.php。 – 2011-03-31 05:41:49

0

嗯,我希望有人纠正我,如果我错了,但最后我知道PH P通过mod_php作为Apache中的一个模块运行,因此Web服务器仍然需要通过代码进行转移。

嗯。我最初的想法是设置缓存控制值使用类似的东西:

<FilesMatch "\.(jpg|jpeg|png|gif)$"> 
Header set Cache-Control "max-age=14400, must-revalidate" 
</FilesMatch> 

但这不起作用。这将只是告诉Apache抢图像的新副本......

编辑:

呀,@ chris_mcclellan的想法是,我在我的思维过程是领导。我会运行它,看看它是否符合你的性能目标。