2013-02-09 17 views
3

最近谷歌改變圖像搜索,結果大部分的流量點擊查看原始圖像,並將它們發送到直接圖像文件。如何將WORDPRESS熱鏈接圖像(對於exp:Image.jpg)重定向到發佈/頁面的位置?

我改變了我的.htaccess,並停止所有的熱鏈接,並重定向到我的主頁,如果他們點擊圖像文件。

最近我也嘗試過,如果有可能重定向到張貼或頁面的圖像。

通過下面的代碼

<?php 
require('../wp-blog-header.php'); 
$imageURL = strip_tags($_GET['id']); 
if imageURL!== "") {  
    $query = "SELECT ID FROM $wpdb->posts WHERE post_type = 'attachment'AND post_parent > '0' AND guid = '$imageURL'";  
    $linkedImage = $wpdb-get_row($query);  
    $attachmentUrl = get_attachment_link($linkedImage->ID);  
    if($attachmentUrl !== "" && !is_numeric(stripos($attachmentUrl, "attachment_id=0"))) { 
    header("HTTP/1.1 302 Found");   
    header("Location: ". $attachmentUrl);   
    exit;  
    } 
} 
$newUrl = get_site_url() . "/image-not-found"; 
header("HTTP/1.0 404 Not Found"); 
header("Location: " . $newUrl); 
exit; 
?> 

但它重定向到http://www.mydomain.com/?attachment_id=

ID是零或無法獲取正確的ID

我的網站在WordPress的CMS版本3.5.1

任何人都可以幫助如何重定向到正確的附件頁面的.jpg文件直接請求。

在此先感謝

回答

0

您的代碼將只如果有請求的URL,這將是與圖像URL完全匹配的ID參數工作,例如http://www.example.com/?id=http://www.example.com/uploads/Some-Image.jpg

是這種情況?即使如此,你也不應該使用id,因爲它是WP中其他事物的保留參數。在.htaccess中,您應該將http://www.example.com/uploads/Some-Image.jpg重定向到例如http://www.example.com/?image_redirect=http://www.example.com/uploads/Some-Image.jpg。然後使用$imageURL = $_GET['image_redirect']

其他說明:strip_tags不會將字符串安全地用作SQL查詢。在WordPress中,您有esc_sql($string)。此外,您應該使用if ($imageUrl != ''),而不是!==。第5行有錯誤,應該說是$wpdb->get_row,您目前有一個減號。我認爲這些是錯別字。最後,你不應該使用Location:標題和狀態代碼404.

相關問題