0

特定のphp変数をjavascript変数に渡すphpでWebサイトを持っています.Googleは私をクロールし、エラーと重複したコンテンツを生成します. JavaScriptでこれらの変数の宣言を無視するようにGoogleクローラーを作成する方法はありますか?

    echo '<script language="javascript">var '.$item['Nombre'].'="'.$descripcion.'";</script>';

私の英語でごめんなさい、

4

4 に答える 4

1

Google は JavaScript コードをクロールし、重複していると見なしますか? 私はこれまでこの問題について聞いたことがありません。一部のページにはインライン JavaScript が含まれています (コンテンツが小さい場合)。これは、<script>...</script>すべてのページで同じことを意味します。

多かれ少なかれあなたと同じようにjavascript変数を出力する場合もあります。Google はそれを「重複コンテンツ」としてマークしませんでした。

ここからの説明:

重複コンテンツとは、通常、他のコンテンツと完全に一致するか、かなり類似している、ドメイン内またはドメイン間のコンテンツの実質的なブロックを指します。ほとんどの場合、これは欺瞞的なものではありません。悪意のない重複コンテンツの例には、次のようなものがあります。

  • モバイル デバイスを対象とした通常のページと簡素化されたページの両方を生成できるディスカッション フォーラム
  • 複数の異なる URL を介して表示またはリンクされたアイテムを保存する
  • Web ページの印刷専用バージョン

複数のページに同じコンテンツがある場合、この種のエラーが発生する可能性がありますが、Google は JavaScript をコンテンツとして解析しません。(ただし、Google が何を行い、何を行わないかを確実に知ることはできません)。Google が<head>タグを重複としてマークしないのと同じように、またはすべてのページで同じレイアウト (メニュー、フッターなど) を使用してもペナルティはありません。

念のため<script>、そのタグをタグに入れることができます。<aside>

HTML 要素は、そのコンテンツとは別のものと見なすことができる、周囲のコンテンツに接線方向に関連するコンテンツで構成されるページのセクションを表します。このようなセクションは、多くの場合、サイドバーまたは挿入物として表されます。多くの場合、用語集の定義などの副次的な説明が含まれています。広告のように、より大まかに関連するもの。著者の伝記; または Web アプリケーション、プロフィール情報、または関連するブログ リンク。

これは、ページのインデックス作成時にコンテンツが Google によって多かれ少なかれ無視されることを意味します。コマーシャルである可能性があるため、重複としてマークされません。

またlanguage="javascript"、スクリプト タグから属性を削除します。その属性は非推奨type代わりに使用)であり、最近では何も考慮されていないため、Googleを混乱させるとは思えません。しかし、Google bot がそうする場合、正しい値はtext/javascript単に ではなく になりますjavascript。Google が値を認識せずjavascript、不明なタイプのテキスト コンテンツとして解析する可能性があります。

スクリプトのデフォルトのタイプはであるため、省略text/javascriptしても安全です。


何よりも、問題は JS 変数の存在ではなく、URL 内の GET パラメータなどの他の何かにあると思われます。GET パラメータは、ウェブマスター ツールで URL パラメータを正しく設定することで処理できます。

于 2013-11-13T12:44:53.943 に答える
0

重要: ほとんどの場合、これは悪い習慣です。Google がボットに別のコンテンツを提供していることに気づき、それが関連性があると見なした場合、サイトは計り知れないほどのペナルティを受ける可能性があります。

私はこのphpソリューションをお勧めします

PHP では、次のコードを使用します。

if (!strpos($_SERVER[‘HTTP_USER_AGENT’],"Googlebot")) {
  //echo the script
}
else{ //dont echo, does nothing. }

しかし、これが機能しない場合は、次の JavaScript コードをスクリプト タグに追加してみてください。

    if (!navigator.userAgent.contains('Googlebot')) {
    //do the script
    } else {
    //does nothing
    }

Ps: ユーザー エージェントのリストは次のとおりですhttp://www.useragentstring.com/pages/Crawlerlist/

于 2013-11-13T11:44:17.663 に答える
0

次の PHP コードを使用できます。

$crawlers = array(
'Google'=>'Google',
'MSN' => 'msnbot',
'Rambler'=>'Rambler',
'Yahoo'=> 'Yahoo',
'AbachoBOT'=> 'AbachoBOT',
'accoona'=> 'Accoona',
'AcoiRobot'=> 'AcoiRobot',
'ASPSeek'=> 'ASPSeek',
'CrocCrawler'=> 'CrocCrawler',
'Dumbot'=> 'Dumbot',
'FAST-WebCrawler'=> 'FAST-WebCrawler',
'GeonaBot'=> 'GeonaBot',
'Gigabot'=> 'Gigabot',
'Lycos spider'=> 'Lycos',
'MSRBOT'=> 'MSRBOT',
'Altavista robot'=> 'Scooter',
'AltaVista robot'=> 'Altavista',
'ID-Search Bot'=> 'IDBot',
'eStyle Bot'=> 'eStyle',
'Scrubby robot'=> 'Scrubby',
);

function crawlerDetect($USER_AGENT)
{
// to get crawlers string used in function uncomment it
// it is better to save it in string than use implode every time
// global $crawlers
// $crawlers_agents = implode('|',$crawlers);
$crawlers_agents = 'Google|msnbot|Rambler|Yahoo|AbachoBOT|accoona|AcioRobot|ASPSeek|CocoCrawler|Dumbot|FAST-WebCrawler|GeonaBot|Gigabot|Lycos|MSRBOT|Scooter|AltaVista|IDBot|eStyle|Scrubby';

if ( strpos($crawlers_agents , $USER_AGENT) === false )
   return false;
// crawler detected
// you can use it to return its name
/*
else {
                                                                                                                                                        1,1           Top
 return array_search($USER_AGENT, $crawlers);
}
*/
}

上記の方法を使用して、リクエストがクローラーから来ているかどうかを確認できます。

于 2013-11-13T13:39:06.883 に答える