У меня есть веб-сайт в php, который передает определенные переменные php в переменные javascript, google сканирует меня, что создает ошибки и дублирует контент. Есть ли способ заставить искателя Google игнорировать объявление этих переменных в javascript?
echo '<script language="javascript">var '.$item['Nombre'].'="'.$descripcion.'";</script>';
Извините за мой английский,
Google сканирует код javascript и рассматривает его дубликат? Раньше я никогда не слышал об этой проблеме. Некоторые из моих страниц имеют встроенный javascript (если контент мал), это означает тот же <script>...</script>
на каждой странице.
Существуют также случаи, когда я выдаю переменные javascript более или менее так же, как и вы. Google никогда не отмечал его как "дублированный контент".
Описание отсюда:
Дублируемое содержимое обычно ссылается на существенные блоки контента внутри или между доменами, которые полностью соответствуют другому контенту или в значительной степени похожи. В основном это не обманчиво по происхождению. Примеры неназванного дублированного контента могут включать:
- Дискуссионные форумы, которые могут создавать как обычные, так и усеченные страницы, предназначенные для мобильных устройств
- Хранить предметы, показанные или связанные через несколько разных URL-адресов.
- Версия для печати только на веб-страницах
Вы можете получить такие ошибки, если у вас один и тот же контент на нескольких страницах, но Google не анализирует javascript как контент. (Хотя вы не можете точно знать, что делает или не делает Google). Точно так же, как Google не будет отмечать тэг <head>
как дубликат, или нет штрафа за то, что он имеет одинаковый макет (меню, нижний колонтитул и т.д.) На каждой странице.
Вы можете поместить этот <script>
тег <aside>
чтобы быть уверенным.
Элемент HTML представляет собой раздел страницы, состоящий из содержимого, касающегося касательно содержимого вокруг него, которое можно считать отдельным от этого содержимого. Такие разделы часто представлены как боковые панели или как вставки. Они часто содержат боковые объяснения, как определение глоссария; более слабо связанные вещи, такие как реклама; биография автора; или в веб-приложениях, информацию профиля или связанные ссылки блога.
Это означает, что контент будет более или менее игнорироваться Google при индексировании страницы. Он не будет отмечать его как дубликат, поскольку он может быть коммерческим.
Также language="javascript"
атрибут language="javascript"
из тегов скрипта. Я сомневаюсь, что это каким-то образом путает google, так как этот атрибут устарел (используйте type
вместо этого), и ничто не учитывает его в настоящее время. Но если google бот делает, правильным значением будет text/javascript
вместо простого javascript
. Возможно, Google не распознает значение javascript
и анализирует его как неизвестный тип текстового содержимого.
Тип скрипта по умолчанию text/javascript
, поэтому безопасно опустить.
Прежде всего, я подозреваю, что проблема заключается не в существовании JS-переменных, а в других URL-адресах, таких как параметры GET. Параметры GET можно решить, правильно настроив параметры URL в Инструментах для веб-мастеров.
Вы можете использовать следующий 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);
}
*/
}
Используя вышеописанный метод, вы можете проверить, что запрос поступает от искателя или нет.
Важно: это плохая практика в большинстве случаев. Если 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: Вот список User-агентов http://www.useragentstring.com/pages/Crawlerlist/
Googlebot
не является правильной строкой агента пользователя - см. Support.google.com/webmasters/answer/1061943?hl=ru.
Другой (непроверенный, умозрительный) подход, требующий, чтобы вы могли написать собственный файл robots.txt
:
Перенесите все свои коды JavaScript в другой URL и включите это как скрипт javascript на своей странице: <script type="text/javascript" src="/path/to/my/php/that/generates/js/variables.php"></script>
Добавьте этот URL в файл robots.txt (см. Ответ Google).
User-Agent: Googlebot
Disallow: /path/to/my/php/that/generates/js/variables.php
variables.php
при поиске в Google, я готов поспорить, что это не помешает Google использовать его в качестве сценария при индексации другой веб-страницы [allow-by-robots.txt], которая импортирует этот скрипт.
GET
параметры за шанс? Я подозреваю, что вы неверно истолковали ошибку.