3

最近、グーグルは画像検索を変更し、その結果、ほとんどのトラフィックが元の画像をクリックし、それらを直接画像ファイルに送信します。

.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 が nil であるか、適切な ID をフェッチできません

Wordpress CMS バージョン 3.5.1 の私の Web サイト

.jpg ファイルの直接要求の適切な添付ファイル ページにリダイレクトする方法を誰でも助けることができます。

前もって感謝します

4

1 に答える 1

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 のヘッダーは使用しないでください。

于 2013-11-03T21:34:59.890 に答える