Основной хост
Для корректной индексации сайта поисковыми системами (индексация всех страниц сайта либо с префиксом www т.е. www.tengy.ru, либо без префикса www т.е. tengy.ru) помимо указания хоста в файле robots.txt желательно обеспечить переадресацию со страниц с некорректными адресами.
Например, при запросе страницы вида
Для сервера Apache это можно реализовать при помощи модуля Mod_rewrite в конфигурационном файле сервера .htaccess
RewriteEngine On
RewriteCond %{HTTP_HOST} ^tengy.ru$ [NC]
RewriteCond %{REQUEST_URI} !^/robots.txt$
RewriteRule ^(.*)$ http://www.tengy.ru/$1 [R=301,L]
Главная страница
Для переадресации страниц на главную страницу вида http://www.tengy.ru создаем следующие правила переадресации:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/index.php$
RewriteRule .+ http://www.tengy.ru/ [R=301,L]
RewriteCond %{REQUEST_URI} ^/index.html$
RewriteRule .+ http://www.tengy.ru/ [R=301,L]
RewriteCond %{REQUEST_URI} ^/index.htm$
RewriteRule .+ http://www.tengy.ru/ [R=301,L]
Выполнение двух вышеперечисленных условий одновременно можно реализовать следующим образом:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^tengy.ru
RewriteRule (.*) http://www.tengy.ru/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.html HTTP/
RewriteRule ^index.html$ http://www.tengy.ru/ [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.php HTTP/
RewriteRule ^index.php$ http://www.tengy.ru/ [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.htm HTTP/
RewriteRule ^index.php$ http://www.tengy.ru/ [R=301,L]
Сессии в адресе страниц
Многие системы управления сайтами создают адреса страниц вида http://www.tengy.ru/development.html?PHPSESSID=cd4b4adb6b1fca2fb87161dea5cf8760. Эти страницы выдаются пользователю в адресной строке, индексируются поисковыми системами. Таким образом получается, что одна и та же страница сайта доступна по разным адресам, например:
http://www.tengy.ru/development.html
http://www.tengy.ru/development.html?PHPSESSID=93adac36813a853a8d0bdaac2a0df33c
http://www.tengy.ru/development.html?PHPSESSID=04a747a432a35a0da0b795dc1bdf9 f9e
и т.п.
Помимо запрета сессий в файле robots.txt желательно сделать редирект с сессионных адресов на статические.
Реализовать это можно следующим образом:
1. В файле .htaccess пишем следующие строки:
RewriteEngine On
RewriteCond %{QUERY_STRING} PHPSESSID
RewriteRule .* redirect.php [L]
2. В корневой директории сервера создаем файл redirect.php следующего содержания:
<?php
$redirect_addr=substr($_SERVER['REQUEST_URI'],0,strpos($_SERVER['REQUEST_URI'],'PHPSESSID')-1);
header('Location: http://'.$_SERVER['HTTP_HOST'].$redirect_addr);
exit();
?>
Мы описали пути решения наиболее распространенных технических проблем, затрудняющих корректную индексацию сайта. Более подробную информацию по синтаксису и использованию ModRewrite можно узнать на сайте:
Использование редиректов
С помощью ModRewrite решаются и более сложные задачи.
Например, при переносе сайта на новую систему управления, мы можем реализовать редирект для каждой страницы следующим образом:
RedirectMatch Permanent ^/portfolio.php$ http://www.tengy.ru/portfolio.html[L,R=301]
При переезде на другой домен (для примера возьмем переезд с домена www.tengystudio.ru на www.tengy.ru:
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteCond %{HTTP_HOST} ^http://www.tengystudio.ru$
RewriteRule ^(.*)$ http://www.tengy.ru/$1 [R=301,L]
Вообще перенос сайта на другой домен желательно доверить специалисту.
Например для переноса сайта с бесплатного хостинга на платный (если нет доступа к конфигурационному файлу .htaccess) можно использовать редирект с помощью метатега refresh. Для этого добавляем метатег (между тегами и страницы):
<meta http-equiv="refresh" content="3; url=http://www.tengy.ru/"> В приведенном примере задержка переадресации - 3 секунды. |