Редирект для неканонических урлов

F1
На сайте с 24.01.2012
Offline
103
928

Уважаемые форумчане, подскажите, пожалуйста, если кто знает как пофиксить мою проблему.

Суть в следующем – обновил шаблон на сайте (WordPress) при очередном апе в Яндеске вылезло 398 неканонических урлов.

Суть этих урлов в следующем – на конце любого адреса дописываете слеш и любые цифры, а страница отдается та же самая.

Например, есть страница – site.ru/dveri

А яндекс нашел где то страницы вида:

site.ru/dveri/123

site.ru/dveri/1234

site.ru/dveri/1235

и так далее 398 штук.

С одной стороны там стоит canonical на правильную страницу, но Яндеску на это пофиг, он считает это ошибкой и все тут.

С другой стороны, по идее страница должна отдавать 404.

Я так понимаю это фишка работы самого движка WP или какого-то из плагинов.

Причем вся фишка в том, что я чекал сайт разными пауками, что есть в наличии (Xenu, Netpeak, Screamingfrog). Ни один из них не находит эти урлы. В сайтмапе, ясен пень их тоже нету.

Где Яндекс их нашел – вообще без понятия.

Поэтому вопрос:

Подскажите, пожалуйста, как сделать редирект с подобных страниц на нормальные, т.е. если после слеша идут цифры – редиректить на то же самое, но без цифр без слеша.

Чтобы и эти 398 покрыть одним махом и чтобы другие такие кривоурлы не находились.

Пейджинга на сайте нет, так что можно все смело редиректить, только вот не знаю как это сделать.

Подскажите пожалуйста, если кто в этом деле силен.

VertuOzz
На сайте с 20.07.2010
Offline
123
#1

Как то у себя прицепил такой костыль в самом начале header.php

$pos = strpos($wp->query_string, 'page=');

$link = esc_url( apply_filters( 'the_permalink', get_permalink() ) );
if ($pos !== false) {
wp_redirect($link, 301);
exit();
}

пока руки не дошли сделать все красиво, но работает и ладно :)

F1
На сайте с 24.01.2012
Offline
103
#2

VertuOzz, СПАСИБО ВАМ БОЛЬШОЕ!

Работает Ваш метод.

100 очков к Вашей карме зачислено уже.

Я уж думал, никто ничего не скажет мне.

А проблема эта, между тем, весьма актуальная - специально поставил чистый WP без единого активного плагина - всё тоже самое.

Так что это в ядре самого движка проблема видимо.

Если кто кинет сюда еще и код для htaccess, для решения обозначенной проблемы, тот также незамедлительно получит 100 баллов к карме и лучи благодарности и признательности.

Спасибо Вам,

VertuOzz, еще раз.

R
На сайте с 20.02.2015
Offline
59
#3


# рубрика
RewriteRule ^([^/]+)/\d+/?$ http://domen.ru/$1/ [R=301,L]
# рубрика/под_рубрика
RewriteRule ^([^/]+)/([^/]+)/\d+/?$ http://domen.ru/$1/$2/ [R=301,L]
F1
На сайте с 24.01.2012
Offline
103
#4

rereg, может я что-то не так сделал, но ваш код у меня не работает.

И еще не совсем понятны комментарии "рубрика, подрубрика".

Описанная мной проблема касается в первую очередь записей (post) и страниц (page).

Но за участие все-равно спасибо Вам.

R
На сайте с 20.02.2015
Offline
59
#5

fackest1, вставить надо после строки RewriteEngine on и вместо domen.ru свой домен.

Малость исправлено:

Перенаправление будет без слеша на конце.


RewriteCond %{REQUEST_URI} !^/page/
RewriteRule ^([^/]+)/\d+/?$ http://domen.ru/$1 [R=301,L]

Про page(пагинацию) так и не понял у вас ее вообще нет чтоли?

F1
На сайте с 24.01.2012
Offline
103
#6

rereg, СПАСИБО!

Все работает.

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

100 баллов к Вашей карме, как и обещал - уже начислили.

Шлю Вам лучи своей благодарности и признательности.

Благодарю.

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