1

Wordpress の私の検索フォームを使用して下品な言葉や成人向けの言葉を検索しようとした場合に、ページをリダイレクトするためのコードが与えられました。

私がこれを行っている理由は、検索機能によって生成されたものであっても、URL に失礼な言葉が含まれているだけでも、Google が Adsense から人々を締め出すことができるからです。

これは、Google から受け取ったメッセージです。

「examplesite.com への広告配信が無効になりました

違反が発生したページの例: http://examplesite.com/?s=somekeyword+tv+sex "

再審査請求を行いましたが、検索によって URL が生成され、Google がその URL をインデックスに登録しているため、自分の Web サイトでこのような検索を行うには、アクセスをリダイレクトする必要があります。

与えられたこのスクリプトを試してみましたが、Wordpress search.php に挿入しましたが、このエラーが発生しました:

解析エラー: 構文エラー、予期しない ';' /home/name/public_html/sitename.com/wp-content/themes/heatmap-adsense-theme/search.php の 83 行目

83 行目は次のコードを参照しています。

完全なコードは以下のとおりです。

    <?php
   function curPageURL() {
   $pageURL = 'http';
   if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
   $pageURL .= "://";
   if ($_SERVER["SERVER_PORT"] != "80") {
   $pageURL .= 

   $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
     } else {
      $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
     }
     if($pageURL;
     $string = "/sex/";

     if (preg_match_all($string, $pageURL, &$matches)) {
          header("Location: http://www.example.com/"); /* Redirect browser */
      }
   }
   ?>

コードはかなり完成しているように見えますが、誰かがそのエラーとその後の解決を手伝ってくれませんか。

前もって感謝します。

PS: メッセージの形式が不適切でしたら申し訳ありません。最善を尽くしていますが、プレビュー ボタンが表示されません。

4

4 に答える 4

7

404 または 410 Gone ヘッダーを使用している場合は、ページをインデックスに登録しないように Google に指示できると確信しています。そのため、特定のキーワード検索用語が使用されると、その余分なヘッダーがそこにポップされるか、警告ページにリダイレクトされます。

PHP を使用し、正規表現を使用しない場合:

<?php 
$bad_words = array('some','bad','words','sex');

foreach($bad_words as $bad_word){
    if(stristr($_SERVER["REQUEST_URI"], $bad_word) !== false) {
        exit(header("Location: http://www.example.com/"));
        //exit(header("HTTP/1.0 410 Gone"));
    }
}
?>
于 2012-09-22T23:02:20.660 に答える
0

サーバー構成を介してリダイレクトを使用することをお勧めします。

#.htaccess
RewriteEngine On
RewriteCond %{QUERY_STRING} (place|bad|words|here) [NC]
RewriteRule ^(.*)$ http://www.example.com/? [R=302,L]
于 2012-09-22T22:53:24.267 に答える
0

上記のスクリプトにはエラーがあるようです。

if($pageURL;
 $string = "/sex/";

これは、次の if ステートメントが正規表現の一致を行っているため、削除する必要があります。

于 2012-09-22T22:58:55.533 に答える