.htaccess从图像重定向到文章

时间:2013-07-18 20:13:24

标签: image .htaccess redirect hotlinking

我试图将从reddit获得的流量重定向到文章,但文章中的图片在reddit.com上热链接

这很好,但是我想知道当用户点击reddit.com上的图像时是否有这样的路径:

http://mysite.com/i/12345.jpg重定向到http://mysite.com/r/12345

我注意到成功执行此操作的唯一网站是livememe.com,当点击时,reddit上的图片会重定向到文章。例如:

http://www.livememe.com/36opcf5.jpg重定向到http://www.livememe.com/36opcf5

我试图做类似的事情。我注意到,只要你直接去那个网址,就会发生这种重定向。

2 个答案:

答案 0 :(得分:1)

试试这段代码:

RewriteEngine On
RewriteRule ^i/([a-zA-Z0-9]+)\.(jpe?g|JPE?G)$ /r/$1 [R=301]

答案 1 :(得分:0)

我知道你问过这几个月了,但是如果你还需要一个解决方案,我找到了答案。试图找到它如何完成几个小时,但没有成功,所以我不得不想出自己的解决方案。 Livememe没有使用htaccess进行重定向,他们使用PHP进行重定向。由于您无法看到引荐来源的区别,无论图片是嵌入图片还是用户点击指向它的链接都是相同的,您必须检查其他内容。我看到的唯一区别是HTTP_ACCEPT标头。如果资源用作图像,它将不会发送值为“text / html”的HTTP_ACCEPT,它将是“image / jpeg”或类似的东西。所以你做的是这样的:首先,用这个创建.htaccess文件:

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /redirect.php?q=$1 [L]

因此,如果找不到文件,则加载redrect.php(您的URL保持不变)。在redirect.php里面放了这样的东西:

$accept = explode(',', $_SERVER['HTTP_ACCEPT']);

$file = $_GET['q'];
$file_info = pathinfo( $file );
$url = $file_info['filename'];
$ext = $file_info['extension'];
$check_html = array_search('text/html', $accept);

if ( file_exists("$url.html") ) {
    if ($check_html !== FALSE) header("location: http://yourdmain.com/$url"); // location of URL you want to redirect to
    else header("location: http://i.yourdomain.com/$url.$ext"); // loction of image file
}
else {
    header('HTTP/1.0 404 Not Found');
    print 'File not found';
}

根据您的服务器进行调整(file_exists()部分)。或者您可以检查数据库,以查看此帖子是否存在。嗯,我想你明白了,怎么做。希望有所帮助。