浏览了一下之后,看起来处理这个问题的最好方法可能是使用mod_rewrite,如果它可用的话。
设置规则,例如
# Enable Rewriting
RewriteEngine on
# Rewrite user URLs
# Input: images/image.png/
# Output: images.php?f=image.png
RewriteRule ^images/(\w+\.png)/?$ images.php?f=$1
然后,使用php 文档中给出的示例来提供图像:
<?php
$filename = $_GET['f'];
if (!file_exists($filename))
{
header('HTTP/1.0 404 Not Found');
include('image404.php'); //or something similar if you want a nice error message
exit();
}
else
{
mail("myemail@mydomain.com", "image opened", "image opened by".$Server['addr']);
$fp = fopen($_GET['f'], 'rb');
header("Content-Type: image/png");
header("Content-Length: " . filesize($name));
fpassthru($fp);
}
请注意,它需要您从子目录(如 )提供文件www.mydomain.com/images/image.png
,但它避免了将所有 png 文件设置为由 php.ini 处理的问题。
您可能需要考虑是否需要额外的清理:例如,您可能想要删除斜杠和..
文件名 - mod_rewrite 如何处理它们需要检查。