Искорени дубли страниц при помощи robots и htaccess

redbeatles
На сайте с 29.07.2010
Offline
149
2213

Чтобы участвовало больше желающих помочь, решил создать топик здесь.

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

дубли страниц вида:

site.ru/stranica

site.ru/stranica/
site.ru/stranica.html

Нужно отставить:

site.ru/stranica.html

На данный момент, я могу через htaccess сделать редирект со страниц "без слэш", на страницы с ".html".

При этом если я закрою все страницы "со слэшем" в robots.txt можно выйти сухим из воды, но как это правильно сделать? Страниц много, больше 1500 штук.

Прошу помощи:

1. Как поставить 301 редирект в htaccess со страниц "со слешэм" и со страниц "без слэша" на страницы с ".html"?

2. Rfr прописать в robots.txt закрытие индексации всех страниц "со слешэм" на конце?

---------- Добавлено в 12:04 ---------- Предыдущее сообщение было в 12:01 ----------

Выражаю благодарность DiAksID , за ответ в этой ветке.

Но при таком условии:

RewriteCond %{REQUEST_URI} (.*\/[^\.]+)($|\?)

RewriteRule ^(.*)$ $1.html [R=301,QSA,L]

При редиректе со страниц "со слешем" получаю страницы со "/.html" что совсем не то, что нужно.

Но за попытку, спасибо!

Системы гарантированного электропитания. Проектирование. Пусконаладочные работы. Источники бесперебойного питания, генераторы, стабилизаторы напряжения.
P
На сайте с 06.01.2009
Offline
601
#1
redbeatles:

2. Rfr прописать в robots.txt закрытие индексации всех страниц "со слешэм" на конце?

ИМХО, это никак не сделать.

ps. что интересно - вдруг неожиданно темы такие стали актуальны.

redbeatles
На сайте с 29.07.2010
Offline
149
#2
postavkin:
ИМХО, это никак не сделать.

Это печально настолько, что я в это не очень верю. Прошу не разводить демагогию на счет тенденции тем по закрытию дублей, я просто не знал что они есть изначально, не более и не менее того.

ZEVS2
На сайте с 28.10.2008
Offline
71
#3

Может фишка из дле чем то может вам помочь

# Редирект для категорий (чтобы в конце URL был /)
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !.html$
RewriteCond %{REQUEST_URI} !.xml$
RewriteRule (.+) $1/ [R=301,L]

# Редирект c www на без www
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.sayt.net
RewriteRule ^(.*)$ http://sayt.net/$1 [R=permanent,L]

# Редирект для главной (с /index.php,html на /)
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ / [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ / [R=301,L]
RoboText (http://robotext.com/?reg) - Мы знаем чего хотят пользователи сети!
siv1987
На сайте с 02.04.2009
Offline
427
#4
redbeatles:
1. Как поставить 301 редирект в htaccess со страниц "со слешэм" и со страниц "без слэша" на страницы с ".html"?

Поставить можно, но редирект будет со ВСЕСХ страниц со слэшем и без (для файлах и каталогах будет исключение). Если на сайте есть страницы в стиле /category/ редирект не подойдет

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([^.]+)(?<!/)$ /$1.html [R=301,L]

ZEVS2:
Может фишка из дле чем то может вам помочь

В вду такого нету

kimberlit
На сайте с 13.03.2007
Offline
370
#5
postavkin:
ИМХО, это никак не сделать.

Disallow: /*/$

redbeatles
На сайте с 29.07.2010
Offline
149
#6

Аллоха!

Хостер откликнулся на мою просьбу:

RewriteEngine On
#RewriteCond %{REQUEST_URI} (.*\/[^\.]+)\/$
#RewriteRule ^(.*)$ $1.html [R=301,QSA,L]
RewriteRule ^(.*)/$ $1 [L]

RewriteCond %{HTTP_HOST} ^site\.org$ [NC]
RewriteRule ^(.*)$ http://www.site.org/$1 [R=301,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.site.org/ [R=301,L]


#RedirectMatch (.*)\/$ http://www.site.org/$1

RewriteCond %{REQUEST_URI} (.*\/[^\.]+)($|\?)
RewriteRule ^(.*)$ $1.html [R=301,QSA,L]

Теперь все страницы и "со слешем" и "без него" автоматически редиректятся на ".html"

Теперь и в robots закрывать ничего не нужно.

Уверен, что еще пригодится это не только мне. Пользуйтесь на здоровье.

Спасибо kimberlit и siv1987 за ответы.

siv1987
На сайте с 02.04.2009
Offline
427
#7

В своем примере выше немного ошибся, там редирект только страниц без слэша.

redbeatles:
Хостер откликнулся на мою просьбу:


RewriteEngine On
RewriteCond %{HTTP_HOST} ^site\.org$ [NC]
RewriteRule ^(.*)$ http://www.site.org/$1 [R=301,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html)\ HTTP/
RewriteRule ^index\.(php|html)$ http://www.site.org/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^.]+)/?$ /$1.html [R=301,L]

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