четверг, 23 июля 2015 г.

Каноничные SEO-грабли

В процессе длительной поддержки проекта рано или поздно приходится встречаться с доработками по SEO. И если вещи типа "тут нам такой тайтл, тут нам кейворды поменять" еще можно исправить костылями (хотя это тоже не самый лучший вариант), то некоторые запросы от СЕОшников стоило бы продумать заранее.
Ниже небольшая подборочка встречаемых запросов.


1. Первый и самый часто встречающийся - урлы товаров/категорий должны быть доступны как с закрывающим слешом, так и без. Таким образом, урлы
my-super-sh.op/catalog/some-section-code и
my-super-sh.op/catalog/some-section-code/
должны вести на одну страницу, и не просто вести, а один урл следует избрать базовым (то есть везде на сайте использовать его), а со второго осуществлять редирект, и не какой-нибудь там, а 301 Moved Permanently.
Данную фичу можно настроить либо через nginx (если у вас nginx) или если все совсем плохо, то (для битриксоидов) с помощью функции LocalRedirect. Обратите внимание, что по умолчанию LocalRedirect отдает 302 Moved Temporarily, потому надо в нее передать статус третьим параметром:
    LocalRedirect($some_url, false, '301 Moved Permanently');

2. Следующая грабля связана с поддоменами. Если вы допустим отдаете картинки через какой-нибудь поддомен типа static.my-super-sh.op, то проверьте чтобы с это поддомена отдавались только картинки, а все запросы к скриптам опять же 302 редиректом уходили на основной домен. То есть запросы типа static.my-super-sh.op/catalog/some-section-code (не представляю, как вообще робот догадывается на них зайти >_<) должны редиректиться на my-super-sh.op/catalog/some-section-code, а не отдавать тот же контент, так как это дубль.

Или если поддомен существует физически - можно расположить там robots.txt с запретом всего и вся.
Сюда же относится доступ к урлу с/без www.

3. Сразу вбейте себе в голову что ссылки на все внешние сайты СЕОшники захотят сделать неиндексируемыми. В помощь - rel="nofollow" и <!--noindex-->. Советую сразу сделать какую-либо функцию, которая будет выводить урлы с запретом индексации и везде ею пользоваться.

4. Следующее - урлы, оканчивающиеся на index.php|index.htm(l), в случае если они отдают тот же самый контент, являются опять же дублями. Поэтому при переходе по урлу вида my-super-sh.op/catalog/some-section-code/index.php должен происходить 301 редирект на my-super-sh.op/catalog/some-section-code/ (опять же я не представляю как робот до этого додумывается))). Учтите, что редирект должен происходить именно в случае, если кто-то ввел в адресную строку index.(php|html), а не всегда. С помощью nginx это можно сделать, например, так.

5. Далее надо обратить внимание на страницы листингов. Например, тех же товаров. Иногда СЕОшникам хочется, чтобы на каждой странице из листинга в head были прописаны следующие два тега:
<link rel="next" url="%NEXT_URL%" />
<link rel="prev" url="%PREV_URL%" />

где %NEXT_URL% и %PREV_URL% - это, соответственно, ссылки на предыдущую и следующую страницы листинга.
Например, если вы находитесь на 4-ой странице листинга, то ссылки должны иметь такой вид:
<link rel="next" url="http://my-super-sh.op/catalog/some-section-code/?page=5" />
<link rel="prev" url="http://my-super-sh.op/catalog/some-section-code/?page=3" />

При нахождении на первой странице листинга не требуется link rel="prev", а при нахождении на последней - link rel="next".
Также, при нахождении на второй странице листинга есть смысл писать
<link rel="prev" url="http://my-super-sh.op/catalog/some-section-code/" />
а не
<link rel="prev" url="http://my-super-sh.op/catalog/some-section-code/?page=1" />
опять же, чтобы не генерировать дубли.

Пока что это все СЕО-грабли, с которыми мне удалось встретиться. Если у вас есть замечания и дополнения - пишите в комменты.

Комментариев нет:

Отправить комментарий