Одной из наиболее коварных и опасных ошибок при создании сайта, является так называемый дупликейт контент, то есть повторы контента, и если с краденными или скопированными себе на сайт статьями все более менее понятно, то есть не менее копипейстные варианты, о которых владелец сайта может даже не подозревать, так как эти дубли создаются самой CMS.
К ним относятся различные служебные страницы, которые например в Joomla создаются пачками, при создании меню или сложной иерархии, так всю эту лабуду надо искоренять путем закрытия от индексации в robots.txt. Сюда же относятся всевозможные pageXXXX, который также отправляем в роботс, или же мочим на уровне метатегов. А вот теги и категории тем не менее можно оставить, если уникализировать, например, сокращенным выводом записей.
Но у нас остаются одни из самых коварных дупликейтов: зеркала сайта с www и без, а также вывод морды сайты по обращению site.ru/index.php
Вот про них я и хочу поговорить ниже.
Сначала быстро разберемся с зеркалами, которые побеждаются путем 301 редиректа с зеркала на основную копию. Делается это путем добавления в файл .htaccess следующих строк (редиректим с site.ru на www.site.ru, наоборот делается от обратного) :
RewriteEngine on
RewriteCond %{HTTP_HOST} ^site.ru$ [NC]
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
А вот на тему редиректа с index.php на корень сайта, придется поломать голову, так как в WP это делается добавлением в уже упомянутый .htaccess следущих строк для уникализированных категорий и тегов:
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
Но в Joomla, за счет того что у неё обращение всех вызовов движка редиректится к index.php, данное выражение циклит главную страницу, так что выражение придется поменять на следующее (для редиректа на www.site.ru):
DirectoryIndex index.php
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.site.ru/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
Если по каким то неизведанным причиам у вас этого не получится, то в связи с тем что у вас происходит безусловный редирект на index.php, можно в его начало добавить проверку запроса, которая и будет выполнять корректный редирект:
if($_SERVER[‘REQUEST_URI’] == “/index.php”) {
header(“Location: /”,TRUE,301);
exit();
}
Собственно благодаря этим не сложным манипуляциям вы сможете прикрыть довольно коварные дубли контента, крадущие у вас PR, тиц и трафик