mod_rewrite 从 .png 重定向到 .php

mod_rewrite redirect from .png to .php

我有:

http://www.site.tk/track/aaaa.png

我希望从该文件夹访问的所有 .png 文件重定向到:

http://www.site.tk/track/track.php

所以当我使用以下方法从另一个网站的文件夹中插入任何 png 文件时:

<img src="http://www.site.tk/track/bbbb.png">

用户将看到 "track.php"

的内容

我试过了:

Options +FollowSymLinks -MultiViews
RewriteEngine On

RewriteBase track

RewriteRule ^([A-z0-9]{6}).png /track.php

我使用 "RewriteBase track" 因为 .htaccess 在 ~/track/ 文件夹中。

这是track.php

的内容
<?php
$date = date('d-m-Y');
$time = date('H:i:s');
$ip = $_SERVER['REMOTE_ADDR'];
$ref = @$_SERVER["HTTP_REFERER"];

header('Content-type: image/png');
echo gzinflate(base64_decode('6wzwc+flkuJiYGDg9fRwCQLSjCDMwQQkJ5QH3wNSbCVBfsEMYJC3jH0ikOLxdHEMqZiTnJCQAOSxMDB+E7cIBcl7uvq5rHNKaAIA'));

$myFile = "tr.txt";
$fh = fopen($myFile, 'a');
fwrite($fh, $myFile = $time ." | ". $date . " | " .$ip. " | " .$ref. " | \r\n\r\n");
fclose($fh);
?>

所有 .png 图像都将是 1px x 1px,作为在 tracker.php 中以 base64 编码的图像。我想在电子邮件和论坛上使用它来查看谁看到了我的电子邮件和我的个人资料。

您设置了 RewriteBase 但不正确。
此外,您的规则在内部重写为根文件 /track.php (不存在),因为您放置了前导斜杠(因此取消了 RewriteBase 操作)。

您可以用这个替换您当前的代码(您的 htaccess 仍然必须在 track 文件夹中)

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /track/

RewriteRule ^[^/]+\.png$ track.php [L]