0

我有一个 php 网站,将某些 php 变量传递给 javascript 变量,谷歌抓取了我,这会产生错误和重复的内容。有没有办法让谷歌爬虫忽略这些变量在javascript中的声明?

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

对不起我的英语不好,

4

4 回答 4

1

谷歌抓取 javascript 代码并认为它​​是重复的?我以前从未听说过这个问题。我的一些页面有内联的 javascript(如果内容很小),这意味着<script>...</script>每个页面都相同。

在某些情况下,我或多或少地以与您相同的方式输出 javascript 变量。谷歌从未将其标记为“重复内容”。

来自这里的描述:

重复内容通常是指域内或跨域的实质性内容块,它们要么完全匹配其他内容,要么明显相似。大多数情况下,这在起源上并不具有欺骗性。非恶意重复内容的示例可能包括:

  • 可以生成针对移动设备的常规页面和精简页面的讨论论坛
  • 通过多个不同的 URL 显示或链接的商店项目
  • 仅打印机版本的网页

如果您在多个页面上具有相同的内容,则可能会出现此类错误,但 google 不会将 javascript 解析为内容。(虽然你永远无法确定谷歌做什么或不做什么)。就像谷歌不会将您的<head>标签标记为重复一样,或者在每个页面上使用相同的布局(菜单、页脚等)也不会受到惩罚。

您可以将该<script>标签放入标签中<aside>以确保安全。

HTML 元素代表页面的一部分,该部分由与其周围内容相切相关的内容组成,这些内容可以被视为与该内容分开。这些部分通常表示为侧边栏或插入。它们通常包含附带说明,例如词汇表定义;更松散相关的东西,比如广告;作者的传记;或在网络应用程序、个人资料信息或相关博客链接中。

这意味着在索引页面时,谷歌或多或少会忽略该内容。它不会将其标记为重复,因为它可能是商业广告。

还要从您的脚本标签中删除该language="javascript"属性。我怀疑它会以任何方式混淆谷歌,因为该属性已被弃用type改为使用)并且现在没有考虑到它。但如果 google bot 这样做,正确的值将是text/javascript而不是简单的javascript. 谷歌可能无法识别该值javascript并将其解析为未知类型的文本内容。

脚本的默认类型是text/javascript,因此可以安全地省略。


最重要的是,我怀疑问题不在于 JS 变量的存在,而在于 URL 中的 GET 参数之类的其他东西。GET参数可以通过在站长工具中正确配置URL参数来处理。

于 2013-11-13T12:44:53.943 回答
0

另一种(未经测试的、推测性的)方法要求您可以编写自己的robots.txt文件:

  1. 将所有 javascript 代码生成移动到另一个 URL,并将其作为 javascript 脚本包含在您的页面中:<script type="text/javascript" src="/path/to/my/php/that/generates/js/variables.php"></script>

  2. 将该 URL 添加到您的 robots.txt 文件中(请参阅Google 答案

用户代理:Googlebot

禁止:/path/to/my/php/that/generates/js/variables.php

于 2013-11-13T12:00:47.750 回答
0

重要提示:在大多数情况下,这是不好的做法。如果谷歌注意到你向它的机器人提供不同的内容并认为它是相关的,那么你的网站可能会受到无法衡量的惩罚。

我推荐这个 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 回答