SEO
Склеиваем зеркала
Для пользователя сайт Что не очень хорошо. Для решения этой проблемы производим «склеивание» сайта, пописывая правила в .htaccess для 301-й редиректа с адреса с www на без www:
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} . RewriteCond %{HTTP_HOST} ^site-name [NC] RewriteRule (.*) site-name [R=301,L] </IfModule>
Заметка
В последующих примерах кода будут упущены строки
<IfModule mod_rewrite.c> RewriteEngine On ... </IfModule>
Все правила должны находится внутри <IfModule mod_rewrite.c>...</IfModule> и быть после RewriteEngine On.
Можно делать так же наоборот — переадресовывать на домен с www:
RewriteCond %{HTTP_HOST} . RewriteCond %{HTTP_HOST} !^site-name [NC] RewriteRule (.*) site-name [R=301,L]
Переадресация с файла index
Ситуация аналогичная с наличием www, только теперь это касается главной страницы сайта: Делаем редирект с index.php на корневой каталог:
RewriteRule ^index.php$ site-name [R=301,L]
Данный вариант заработал у меня как-то кривовато. Вот этот показал себя лучше:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.php HTTP/ RewriteRule ^index.php$ site-name [R=301,L]
Аналогично можно избавится от index.php для любой директории:
RewriteBase /directory-name/ RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /directory-name/index.php HTTP/ RewriteRule ^index.php$ site-name [R=301,L]
Переадресация со старых и битых ссылок
Поисковики не очень любят, когда на сайте присутствуют битые ссылки. Чтобы направить роботов по верному пути используем тот же 301-й редирект (перемещен навсегда):
Redirect 301 /old-url/file.html site-name
Следует отметить, что старая ссылка может быть указана с относительным адресом, новая должна иметь полный.
Удаляем категорию из url
Многие CMS имеют древовидную организацию файлов: создаем категорию, в которой подкатегорию, в которой потом конечный документ. В итоге мы имеем довольно длинные URL, например, Длинный URL — это не всегда удобно и несколько страдает SEO. Сокращаем URL, «выбрасывая» категории из URL:
RewriteRule ^category/subcategory/(.+)$ site-name [R=301,L]
Данный прием нужно применять обдуманно, иначе может пострадать юзабилити.
Страницы с ошибками
Если пользователь или робот попал на несуществующую страницу, или пользователь не прошел аутентификацию, или произошла серверная ошибка — грамотным решением будет перенаправить посетителя на страницу, с описанием ошибки:
- 403 — пользователь не прошел аутентификацию (доступ запрещен);
- 404 — запрашиваемый документ (файл, директория) не найден;
- 500 — внутренняя ошибка сервера (причины могут быть разными).
ErrorDocument 403 /path-to/403.html ErrorDocument 404 /path-to/404.html ErrorDocument 500 /path-to/500.html