Forumlar / National / Russian / Модули и плагины / Проблема с .htaccess и SEF URLs

staleo
#1 2012-02-22 09:54

Здравствуйте,

Был сайт на 0.6.7 с урлами вот такого вида: site.ru/page/6123.shtml. Перевел на 0.9.7, включил SEF URLs, урлы стали вот такого вида: site.ru/category_name/6123. И это здорово, однако все страницы старого вида (site.ru/page/6123.shtml) теперь не открываются, весь поисковый индекс на >6000 страниц кое-чем накрылся.

Как поступить? Можно ли оставить эти красивые новые урлы site.ru/category_name/6123, но чтобы старые либо редиректились на новые, либо если не редиректились, то хотя бы открывались, как и ранее.

Буду чертовски благодарен за решение проблемы. Близок к суициду.

Dayver
#2 2012-02-22 13:45

Опишу свой опыт - на геноа была трабла у сайта с урлами вида site.ru/category_name/page_alias.html , а именно одна и та же страница была доступна была по любому адресу site.ru/bla-bla/page_alias.html или site.ru/olo-lo/page_alias.html из-за чего после того как страница редактировалась и перемещалась в другую категорию у поисковика в индексе хранилась с разными адресами - что не есть хорошо .... решением было написание мини плагина (на хук page.main) в десяток строк с кодом нечто вроде

if ($c != $pag['page_cat'])
{
	//sed_log("Попытка захода на страницу №".$pag['page_id']." с некорректной категорией в url (".$c." хотя должно быть ".$pag['page_cat'].")", 'sec');// для сбора статистики неверхных заходов
	$pag_new_url = (empty($pag['page_alias'])) ? $pag['page_id'] : $pag['page_alias'];
	header("Location: " . SED_ABSOLUTE_URL . $pag['page_cat'] . "/" . $pag_new_url . ".html");
	exit;
}

Соответственно могу порекомендовать решить проблему аналогичным способом

  1. в .htaccess написать правило вроде такого
    RewriteRule ^page/([0-9]+)\.shtml$ page.php?id=$1 [QSA,NC,NE,L]
  2. И сделать аналогичный миниплуг... только с учетом специфики сиены - суть которого в том если переменная $c пуста то редиректить на новый формат урла

Это всего лишь совет и напутствие в какую сторону смотрел бы я в вашей ситуации - но никак не готовое решение

Pavlo Tkachenko aka Dayver
staleo
#3 2012-02-22 14:49

2Dayver

Ну скорее вот это :)

RewriteRule ^page/([0-9]+)\.shtml$ page/$1 [QSA,NC,NE,L]

Я уже убил кучу времени, чтобы понять, как .htaccess работает, и только до всего допер, открываю, а тут ваш ответ. :) Все равно спасибо!

Добавлено 4 минуты спустя:

Главное, что site.ru/page/6123 — адрес валидный, и страница вообще открывается, а не выдает 404, а новые страницы будут индексироваться уже под новыми красивыми адресами с учетом категории в урле.

Мне самое важное было ссылки сделать из битых — небитые. :)

Bu gönderi staleo tarafından düzenlendi (2012-02-27 22:21, 13 yıllar önce)
Trustmaster
#4 2012-02-23 16:45

Верной дорогой идёте товарищи, осталось только такой миниплуг под сиену выложить. И вместо temporary redirect в (header: location) поставить там перманентный 301.

May the Source be with you!