0

我试图将我从 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

我正在尝试做类似的事情。我注意到,只要您直接访问该网址,就会发生此重定向。

4

2 回答 2

1

试试这个代码:

RewriteEngine On
RewriteRule ^i/([a-zA-Z0-9]+)\.(jpe?g|JPE?G)$ /r/$1 [R=301]
于 2013-07-18T20:16:30.990 回答
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() 部分)。或者您可以检查数据库,以查看是否存在此类帖子。好吧,我想你明白了,这是怎么做的。希望有帮助。

于 2013-11-08T10:43:45.000 回答