Задать вопрос

Bitrix: как правильно сменить адреса с ID на текстовые ЧПУ для хорошо проиндексированного сайта?

Есть сайт с торговым каталогом, который реализован не в виде комплексного компонента, а на отдельных файлах: index.php, sections.php?SECTION_ID=X, detail.php?ELEMENT_ID=Y&SECTION_ID=X

Нужно сделать ЧПУ вида /#SECTION_CODE#/ и /#SECTION_CODE#/#ELEMENT_ID#

Самое простое напрашивающееся решение — сделать-таки комплексный компонент на имеющихся шаблонах (работы на пару часов). Но ведь тогда будет все плохо с ранее проиндексированными страницами…

Вижу самый простой вариант — сделать комплексный компонент, а в старых файлах sections.php и detail.php вытаскивать простым запросом к базе код категории и редиректить 301-м редиректом на новые адреса.


Вопрос собственно вот в чем — все нагугленные материалы содержат туманные намеки, что мол настоящему спецу по битриксу такое сделать — раз плюнуть, и все делается без глубокого залезания в код, только через настройку правил обработки адресов. Вот я и думаю — может тут кто-нибудь поделится этим самым тайным знанием? Засада-то в том, что в текущих адресах используется ID, а в итоговых нужен CODE (текстовый алиас). Поэтому просто через mod_rewrite точно не получится…
  • Вопрос задан
  • 16534 просмотра
Подписаться 15 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
MarcusAurelius
@MarcusAurelius
автор Impress Application Server для Node.js
А мягкий переход на новые урлы лучше всего сделать через «canonical». Поясняю: нужно все ссылки на страницах заменить на новый вариант урлов, но сами страницы должны быть доступны и по новому и по старому адресу (уж как это сделать на битриксе — не могу подсказать, не спец в этом). Это делается для того, чтобы проиндексированные страницы в поисковых машинах не стали битыми. Потом нужно добавить и на страые и на новые страницы каноникал, вот статья гугловская — googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html и поисковые машины переиндексируя страницы будут мягко заменять в индексе старые урлы на новые. Когда это произойдет полностью, это Вы отследите по статистике, по просмотру «site:yourdomain.com» (для гугла) и по логам (просто поиском), то Вы сможете отключить старые урлы вообще. Дополнительно можно навесить редирект 301 или софт-редирект через javascript (это уж как битриксу лучше с технологической стороны). Чтобы сайт быстро переиндексировался можете создать RSS или сайтмеп сайта с новыми урлами и каким-то недавним . Гугл начнет забирать новые страницы, определить, что они дублируют контент со старыми, проверит старые, найдет и там и там каноникал и просто заменит урлы в индексе (без удаления старых урлов в из индекса и повторной переиндексации).
Ответ написан
dudeonthehorse
@dudeonthehorse
Email Developer
Как это ни муторно, ручной ввод 301 редиректов в .htaccess — самый верный способ. Проверено не одним десятком хорошо проиндексированных проектов.
Ответ написан
bigdogsru
@bigdogsru Автор вопроса
Слушайте, я правда не понимаю… и в том, и в другом случае поисковик не переиндексирует сайт, а просто перенаправляется на другой URL! Только в случае с редиректом еще и живой человек, зашедший на сайт, тоже на новый URL перенаправляется… почему это будет переиндексация, а каноникал — коррекция? Не понимаю…
Вот у меня сейчас меняются URL'ы на сайте (не битрикс, самописный движок) — я просто вставляю на старых страницах следующий код:
if(!isset($_GET["id"])) {
	Header("Location: /rus/dogs/");
	exit();
}
$id = intval($_GET["id"]);
$path = '/rus/dogs/'.$id.'/';
	header("HTTP/1.1 301 Moved Permanently");
	header("Location: $path");

И буквально на следующий день в индексе у поисковиков уже новые адреса…
Ответ написан
gromdron
@gromdron
Работаю с Bitrix24
1) Пропишите правила в urlrewrite для обоих вариантов работ.
Т.е. чтобы И по section.php?SECTION_ID=TEST И по /TEST/ открывалась одна и та же страница,
чтобы И по detail.php?ELEMENT_ID=1234 И по /product/1234/ открывалась одна и та же страница.

2) Поставьте на сайт канонические ссылки, чтобы на странице section.php?SECTION_ID=TEST каноническая ссылка указывала на /TEST/, а на detail.php?ELEMENT_ID=1234 на /product/1234/

3) Через пару недель, начните толерантные переадресовки - сначала отдельные разделы (т.е. чтобы section.php?SECTION_ID=TEST переадресовал 301 редиректом на /TEST/, а section.php?SECTION_ID=TEST1 работал как и раньше)

4) Еще через пару недель сделайте полную 301 переадресацию
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы