我在php中有一个网站,它将某些php变量传递给javascript变量,google抓住我,这会产生错误和重复内容。有没有办法让google抓取工具忽略javascript中这些变量的声明?
echo '<script language="javascript">var '.$item['Nombre'].'="'.$descripcion.'";</script>';
抱歉我的英文,
答案 0 :(得分:1)
谷歌抓取javascript代码并认为它重复?我以前从未听说过这个问题。我的一些网页内嵌了javascript(如果内容很小),这意味着每页都有相同的<script>...</script>
。
在某些情况下,我会以与您相同的方式输出或多或少的javascript变量。 Google从未将其标记为“重复内容”。
来自here的说明:
重复内容通常是指实质性内容块 在域内或跨域完全匹配其他内容或 非常相似。大多数情况下,这不是起源欺骗性的。 非恶意重复内容的示例可包括:
- 可以生成针对移动设备的常规页面和精简页面的论坛
- 存储通过多个不同网址显示或链接的项目
- 仅适用于打印机的网页版本
如果您在多个网页上拥有相同的内容,则会出现此类错误,但Google不会将javascript解析为内容。 (虽然你永远不知道谷歌做了什么或不做什么)。与谷歌不会将您的<head>
标记标记为重复的方式相同,或者在每个页面上使用相同的布局(菜单,页脚等)不会受到惩罚。
您可以将<script>
标记放在<aside>
标记中以确定。
HTML元素表示包含的页面的一部分 与其周围内容相切的内容, 可以认为它与该内容是分开的。这样的部分 通常表示为侧边栏或插入。他们经常包含 侧面解释,如词汇表定义;更松散的相关 东西,比如广告;作者的传记;或者在 网络应用程序,个人资料信息或相关的博客链接。
这意味着谷歌在索引页面时会或多或少地忽略内容。它不会将其标记为重复,因为它可能是一种纪念。
同时从脚本标记中删除language="javascript"
属性。我怀疑它会以任何方式混淆谷歌,因为that attribute is deprecated(改为使用type
)并且现在没有任何考虑因素。但是如果谷歌机器人确实如此,那么正确的值将是text/javascript
,而不仅仅是javascript
。谷歌可能无法识别值javascript
并将其解析为未知类型的文本内容。
脚本的默认类型为text/javascript
,因此省略安全。
最重要的是我怀疑问题不在于JS变量的存在,而在于你的URL中的GET参数。可以通过在网站站长工具中正确配置网址参数来处理GET参数。
答案 1 :(得分: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
}
的列表
答案 2 :(得分:0)
另一种(未经测试的,推测性的)方法,要求您可以编写自己的robots.txt
文件:
将您生成的所有javascript代码移至另一个网址,并将其作为javascript脚本添加到您的网页中:<script type="text/javascript" src="/path/to/my/php/that/generates/js/variables.php"></script>
将该网址添加到您的robots.txt文件中(参见Google answer)
User-Agent:Googlebot
Disallow:/path/to/my/php/that/generates/js/variables.php
答案 3 :(得分: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);
}
*/
}
使用上述方法,您可以检查请求是否来自抓取工具。