Аякс и гугл

12 3
A4
На сайте с 05.01.2012
Offline
55
2678

Здравствуйте, уважаемые форумчане. Имеется музыкальный сайт, написанный полностью с использованием аякс технологии. Как известно аякс приложения не индексируются поисковыми системами, так-как боты попросту не умеют исполнять js код(или вроде того). Однако для музыкального сайта Очень Важно быть в индексе поисковика. Как-же иначе привлечь посетителей) Можно конечно рекламой, но и с поисковиках тоже надо присутствовать.К счастью гугл может работать с аякс сайтом, если он написан в соответствии с определенными правилами. Эти правила написаны тут: https://developers.google.com/webmasters/ajax-crawling/docs/getting-started

Все на энглише. в кратце суть такова - все ссылки аякс сайта должны работать через хэшбэнги. Это символы вида #! или типа того. Техническая часть очень длинна и так просто не объясняется. Хешбэнги преобразуются гугл ботом. например такой запрос:

www.example.com/ajax.html#!key=value

переделывается в

www.example.com/ajax.html?_escaped_fragment_=key=value

На стороне сайта по адресу

www.example.com/ajax.html?_escaped_fragment_=key=value

должна лежать версия странички без аякса, то есть просто с данными.

Это я на муз сайте сделал, кому интересно - перейдите по ссылке:http://aftamat4ik.ru/?_escaped_fragment_=

Нормальная версия сайта выглядит так: http://aftamat4ik.ru

Так-же если вы не хотите чтобы в адресе прописывался хеш тег вот так: www.example.com/#!/ - это главная страница, то н текст страницы надо добавить следующий мета тег:

<meta name="fragment" content="!">

это укажет гугл боту, что главная страница сайта в статическом варианте находится по адресу:

www.example.com/ajax.html?_escaped_fragment_=

Этот тег у меня добавлен! можете посмотреть в исходном коде страницы, если не верите. Тогда Почему! почему гугл бот вместо того чтобы сканировать адрес http://aftamat4ik.ru/?_escaped_fragment_=

сканирует и помещает в поисковик это:http://aftamat4ik.ru

есть такой инструмент - гугл вебмастер. так вот он как-раз и показывает мне страницу по прямому адресу, а не по _escaped_fragment_=

могу даже код привести.

вот как на главной странице:

<div id="main"><!-- albums -->

<!-- тут аяксом альбомы и исполнители ставятся-->
</div><!--end of albums-->

вот как на статичной версии:

<div id="main"><!-- albums -->

<p>Список популярных исполнителей</p><a href='/#!authorname=ГРОТ' class='link'><div class='folder' id = 'artist'><img src='/audio/ГРОТ/album-art.jpg'></img><p id = 'atitle'>ГРОТ</p></div></a><a href='/#!authorname=Денис Майданов' class='link'><div class='folder' id = 'artist'><img src='/audio/Денис Майданов/album-art.jpg'></img><p id = 'atitle'>Денис Майданов</p></div></a
....
/div></a>
</div><!--end of albums-->

Вы все это можете увидеть сами, если сравните исходный код. Теперь я сканирую страницу гугл ботом - там есть опция просмотреть как гуглбот.

вот что выдает гугл:

<div id="main"><!-- albums -->

<!-- тут аяксом альбомы и исполнители ставятся-->
</div><!--end of albums-->

Вопрос! Какого?! о_0 там же тег добавлен в начале

<meta name="fragment" content="!">

Почему поисковик не сканирует то, что должен? Или гугл не всегда делает так, как в документации написано? Для всех остальных страниц все сканируется правильно. Например страница по урлу: http://aftamat4ik.ru/#!authorname=ГРОТ переадресовывает бота по верному адресу, и в тегах <div id="main"> гугл бот видит то что надо.

<div id="main"><!-- albums -->

<title>Исполнитель ГРОТ</title><meta name="description" content="Слушать онлайн, Скачать композиции исполнителя - ГРОТ"><a class='link' href='/#!author=ГРОТ&&album=Вершители судеб (2010)'><div class='folder' id = 'album'><img src='/audio/ГРОТ/Вершители судеб (2010)/album-art.jpg'></img><p id = 'atitle'>Вершители судеб (2010)</p></div></a><a class='link' href='/#!author=ГРОТ&&album=Личная Вселенная (2010)'>
...

Что странно. Вроде бы все правильно, вроде все нормально.

вот хтакесс переадресация,если передают гет параметр _escaped_fragment_=:

RewriteCond %{QUERY_STRING} ^_escaped_fragment_=(.*)$

RewriteRule ^(.*)$ /noajax.php?%1 [NC,L]

тут тоже вроде все нормально...

Кто встречался с похожей проблемой, или делал свои сайты на аякс, помогите пожалуйста советом.

S
На сайте с 11.05.2011
Offline
53
#1

noajax.php?$1 а не %

И что это еще такое:

<img src='/audio/ГРОТ/Вершители судеб (2010)/album-art.jpg'></img>

просто <img src='/audio/ГРОТ/Вершители судеб (2010)/album-art.jpg' />

Требуются свадебные фотографы в Казани (http://kazan.fotograd.org/ru/photographers/weddings/)
A4
На сайте с 05.01.2012
Offline
55
#2
noajax.php?$1 а не %

упс, опечаточка....)

просто <img src='/audio/ГРОТ/Вершители судеб (2010)/album-art.jpg' />

Не имеет разницы) Картинки показывает же)) привык я так писать)

noajax.php?$1 а не %

- не не помогло, к сожалению...

S
На сайте с 11.05.2011
Offline
53
#3

<meta name="fragment" content="!">

не вижу этого метатега :(

богоносец
На сайте с 30.01.2007
Offline
769
#4
aftamat4ik:
почему гугл бот вместо того чтобы сканировать адрес http://aftamat4ik.ru/?_escaped_fragment_=
сканирует и помещает в поисковик это:http://aftamat4ik.ru

Если Гугл найдёт #!hash то сканирует с ?_escaped_fragment_=hash

но в выдаче будет с #!hash

А у Яндекса с ?_escaped_fragment_=hash

т.е. с Я и G придут к вам по разным урлам. И это надо правильно обработать... возможно на клиенте.

aftamat4ik:
Как известно аякс приложения не индексируются поисковыми системами, так-как боты попросту не умеют исполнять js код

На это не следует надеяться. В robots.txt надо указывать явно — чего можно, а чего нет. А то иногда получается смешно...

Вообще, #!это гуглоиды придумали зря, так можно создать дубли тем, кто про#!это всё просто не думает.

А если вы #!такой индексации хотите, то думайте об элементарной понятности искателю/посетителю... результатов такой индексации.

A4
На сайте с 05.01.2012
Offline
55
#5

богоносец, Так то да, вы правы конечно. но вся выгода моего положения в том, что Яндекс бот никогда в жизни не отправит моей главной странице запрос вида http://aftamat4ik.ru/?_escaped_fragment_=authorname=%D0%93%D0%A0%D0%9E%D0%A2, так-как он просто не увидит на главной странице никаких ссылок и элементов. все эти элементы добавляются динамически, а значит для бота яндекса их не существует. у меня яндекс ток 2 страницы проиндексировал, и то из них 1 не найдена, а 2- это главная собственно. Так что не стоит заморачиваться.

Я понимаю что ссылки такого вида:

/author/Грот/album/На ковре из цветов

Кончено смотрятся кошернее.

Да , можно создать в htacess правило на чпу. Но это ничего не изменит.

Все равно при переходе по красивому урл элементы будут загружаться аяксом. То есть что хеши, что без хешей, результат один и тот-же.

И к стати урл вида /#!authorname=ГРОТ понятнее чем /authorname/Грот. ибо в моем случае понятно что передается переменная authorname и ее значение. А во втором случае - пользоватедь считает что в папке /authorname/ лежит подпапка Грот, и имя это автора, или какая-то левая папка ему не понятно.

---------- Добавлено 03.07.2012 в 18:02 ----------

<meta name="fragment" content="!">
не вижу этого метатега

aftamat4ik.ru смотри на главной в блоке <head> в самом верху

---------- Добавлено 03.07.2012 в 19:32 ----------

Может есть какие-то еще пути сделать аякс приложение(сайт) индексируемым? Для справки: я сделал на своем сайте аякс переходы ,потому-что при переходах со страницы на страницу музыка, воспроизводимая в плейлисте пользователя должна играть без перебоев. Может как-то это можно обойти? вроде под интернет эксплорер даже тег какой-то есть...

богоносец
На сайте с 30.01.2007
Offline
769
#6
aftamat4ik:
aftamat4ik.ru смотри на главной в блоке <head> в самом верху

В кэше пока нет. Подождите.

И разве в хелпе говорили делать <meta name="fragment" content="!"> для внутренних?

http://support.google.com/webmasters/bin/answer.py?hl=ru&answer=174992
Некоторые из ваших страниц могут не иметь хэш-фрагментов. Например, для главной страницы лучше использовать адрес www.example.com, а не www.example.com#!home. Исходя из этого, предусмотрено специальное решение для страниц без хэш-фрагментов.

Чтобы проиндексировать эти страницы без хэш-фрагментов, нужно включить в HTML-заголовок страницы специальный метатег...

Обратите внимание на одно важное ограничение, касающееся данного метатега: его единственным допустимым значением является "!". Иными словами, метатег будет всегда иметь точно такой вид: <meta name="fragment" content="!">, что указывает на пустой хэш-фрагмент, но не страницу с содержанием AJAX.

И <title> у вас нету по /?_escaped_fragment_=find=Q

Когда увидите результат индексации... всё придётся переделать.

aftamat4ik:
он просто не увидит на главной странице никаких ссылок и элементов

Всё увидит <a class='link' href='#!authorname=ГРОТ'>ГРОТ</a>

И готовьтесь к проблемам типа http://aftamat4ik.ru/#!ajax-Govno т.е. значения параметра _escaped_fragment_ надо проверять и если оно не является допустимым, то отвечать 301 например, а у вас 200 Ок. А как проверять, если урлов аж 1186 штук?

A4
На сайте с 05.01.2012
Offline
55
#7

title для find у меня прописаны внутри самой ссылки: echo "<li><a class='link' href='/#!find=".$uc."' title='Поиск исполнителей по букве ".$uc."'>".$uc."</a></li>";

и в самом файле, выводящем список найденных исполнителей тоже стоит

echo "<title>Найти по букве $link</title>";

У меня тег титле внутри каждого файла отдельно прописывается.

И разве в хелпе говорили делать <meta name="fragment" content="!"> для внутренних?

а у меня и так для внутренних)

Всё увидит <a class='link' href='#!authorname=ГРОТ'>ГРОТ</a>

Елы палы, я писал этот сайт) Раз сказал что не будет - то не будет он их видеть. Дело в том что пресловутое <a class='link' href='#!authorname=ГРОТ'>ГРОТ</a> добавляется методом append в jquery)) Если бот не выполняет джаваскрипт, значит на месте ссылки - пустое пространство. На главной странице у меня везде почти пусто(алфавитный указатель тока ,разве что). Все содержимое грузится через аякс и потом вставляется через $.append(). так что яндекс со мной даже близко не дружил)

таак, надо подумать) По сути переменных всего ок 7 штук, это авторнаме, финд, автор, альбом, и еще несколько. Поэтому проверку не сложно замутить. спс за замечание)

---------- Добавлено 04.07.2012 в 01:05 ----------

http://aftamat4ik.ru/?_escaped_fragment_=ajax-Govno

Выводится главная страница, так как все параметры пусты, с чем я себя и поздравляю. вроде все нормально, или нет?)

И аякс не говно, а вынужденная мера. если бы можно было без него обойтись - сидел бы я тут... Так что если никогда не писали подобного уровня проектов - нечего встревать. Неужели логики не хватило догадаться для чего я использовал аякс? я вроде это где-то выше писал, или нет?

Для справки: я сделал на своем сайте аякс переходы ,потому-что при переходах со страницы на страницу музыка, воспроизводимая в плейлисте пользователя должна играть без перебоев.

Не посвященным - для муз. сайта это очень важно, особенно в моем случае. так что от аякса я не откажусь будь это хоть кислота...

по делу есть какие-нить советы то? если нет, то я откланиваюсь. Время только потратил... Написал в сапорт гугл аналистика корявым энглишем, надеюсь прояснят ситуацию.

A4
На сайте с 05.01.2012
Offline
55
#8

вот вам 301 редирект - перейдите по ссылке)

http://aftamat4ik.ru/?_escaped_fragment_=qwe

как сделал? ну мало ли может поможет кому:


$size = sizeof($_GET);//узнаем размер массива с гет параметрами
if($size>0 && $janre=="" && $authorname =="" && $author=="" && $album=="" && $title=="" && $category =="" && $find=="" && $searsh ==""){//если отправлен гет с неверными параметрами

header("HTTP/1.1 301 Moved Permanently");
echo ("Страница не существует");
exit();
}

Сойдет?) $_GET - это ассоциативный массив, поэтому если мы не знаем какие параметры поступают - просто узнаем его размер. Если значения всех переменных, которые теоретически могли прийти $_GET равны пустой строке - то гет запрос, переданный странице не верен.

Так подойдет? хД

______________________________

У иных миров не просить ответа. Дай родиться вновь - отпусти меня.....

Матричный бог решает все....

---------- Добавлено 04.07.2012 в 10:01 ----------

К стати как избавиться вот от этого:

(тега титле там нету - есть только тег дескрипшн, я его недавно добавил не успел еще проиндексировацо)

_________________________________________________________

Если в хтакесс правило прописать - то сайт попросту пересанет получать список песен через поиск - не катит.

Если в роботс прописать дисаллов - то я не знаю что будет))

Может стоит таки прописать?

богоносец
На сайте с 30.01.2007
Offline
769
#9
aftamat4ik:
http://aftamat4ik.ru/?_escaped_fragment_=ajax-Govno
Выводится главная страница, так как все параметры пусты, с чем я себя и поздравляю. вроде все нормально, или нет?)

А завтра таких главных в индексе будет 100500 со случайными параметрами. Это и есть дубли. Ответ у вас 200 ОК на всё такое.

По /?_escaped_fragment_=qwe ответ 200

aftamat4ik:
<a class='link' href='#!authorname=ГРОТ'>ГРОТ</a> добавляется методом append в jquery)) Если бот не выполняет джаваскрипт

Ну зайдите с выключенными скриптами хоть на / хоть на /?_escaped_fragment_= и там <a class='link' href='#!authorname=ГРОТ'>ГРОТ</a>

Объяснять дальше смысла нет. Когда увидите в индексе, тогда и задумаетесь, может быть. И хелп перечитаете

Чтобы проиндексировать эти страницы без хэш-фрагментов, нужно включить в HTML-заголовок страницы специальный метатег

и не будете предлагать боту этот метатег на страницах с #hash

aftamat4ik:
К стати как избавиться вот от этого:
(тега титле там нету - есть только тег дескрипшн, я его недавно добавил не успел еще проиндексировацо)

А такого дальше будет больше. И нужно ли оно в выдаче? Понятно ли?

A4
На сайте с 05.01.2012
Offline
55
#10
По /?_escaped_fragment_=qwe ответ 200

Теперь 301 - я там косякнул маленько, щас исправил...

Тепеоь надо чтобы для /?_escaped_fragment_=authorname=qwe

выдвало 301 редирект)

хД

Чтобы проиндексировать эти страницы без хэш-фрагментов, нужно включить в HTML-заголовок страницы специальный метатег

читаем дельше:

In order to make pages without hash fragments crawlable, you include a special meta tag in the head of the HTML of your page. The meta tag takes the following form:
<meta name="fragment" content="!">
This indicates to the crawler that it should crawl the ugly version of this URL. As per the above agreement, the crawler will temporarily map the pretty URL to the corresponding ugly URL. In other words, if you place <meta name="fragment" content="!"> into the page www.example.com, the crawler will temporarily map this URL to www.example.com?_escaped_fragment_= and will request this from your server.

Ду ю андэстэнд this?

Суть: там где прописан метатег <meta name="fragment" content="!">

Бот автоматически не индексирует страницу а переходит по адресу

адрес страницы+?_escaped_fragment_=

то есть если у меня на главной стоит метатег <meta name="fragment" content="!">

то бот должен сканировать aftamat4ik.ru/?_escaped_fragment_=

Но он не сканирует! Я в сапорт гугл вебмастера написал - жду ответа...

А такого дальше будет больше. И нужно ли оно в выдаче? Понятно ли?

конечно не нужно хД Но как это убрать то?

echo "<noindex>"; чтоли прописать внутри файла? Будет толк? Не навредит ?

и не будете предлагать боту этот метатег на страницах с #hash

Нету там нигде # хешей вообще нету. Дляб ота главная страница выглядит так: aftamat4ik.ru и никаких там хешей нету вообще.

То что у меня в отделе breadcrumb ссылка Home выглядит так: href="/#" еще ничего не значит - это просто так - чтобы не перезагружать страницу во врема копания по ней пользователя.

Если написать туда типа href="/" или href="aftamat4ik.ru/", то при переключении страницу будет Перезагружать! Это не приемлемо вообще никаким образом. Хеш там был есть и будет до скончания денег на хостинге хДД

___________________________________

Пусты дороги свет и мгла,

Я не с тобой но я не враг.

Дай руку мне, дай мне огня,

Мятежный страннник...

http://aftamat4ik.ru/#!authorname=Catharsis

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий