Редирект большого количества страниц одного типа

ideaman
На сайте с 25.01.2013
Offline
129
1276

Как сделать 301 редирект с большого количества старых страниц (чтобы вы понимали это интернет магазин) вида "?i=1266" и перенаправить их на новые страницы ЧПУ. Можно же как-то сделать это автоматически, потому как в ручную это займёт не день и не два... :(

SEO
Плюшкин
На сайте с 25.12.2007
Offline
45
#1

Копайте по запросу "чпу регулярные выражения"

Скачать блокнот notepad (http://notepad2.ru/)
Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#2

Были урлы /index.php?i=1266

Стали /item/1266


RewriteEngine On
RewriteCond %{QUERY_STRING} ^i=([\d]{1,7})$
RewriteRule ^(.*)$ http://site.ru/item/%1 [R=301,L]

Если по каким-то причинам не будет работать, то выделенное жирным заменить на


^i=(.*)$
Подпись))
ideaman
На сайте с 25.01.2013
Offline
129
#3

Милованов Ю.С,

Не совсем, было просто ?i=1266, стало shop/product/shina-2009-zimnaya

site,ru/shop/product/186?i=186, наверное тут надо играться и более сложный делать... Но за попытку помочь, спасибо) приятно.

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#4

Ну я бы тогда на ПХП это сделал, а не через htaccess

В самом начале скрипта смотрим, какой формат урла запрошен. Если это www.site.ru/?i=(.*), то делаем выборку из БД, находим ему соответствие(скорей всего это отдельное поле в таблице с товарами) и 301 редиректом посылаем юзера на новый адрес.


if (preg_match('/i=([^&]+)/', $_SERVER['QUERY_STRING'], $matches))
{
$i = (int) $matches[1];//это номер товара
$sql = "SELECT `alias` FROM `items` WHERE `id`='$i'";
$result = mysql_query($sql);
if (mysql_num_rows($result) != 0)
{
$row = mysql_fetch_assoc($result);
$alias = $row['alias'];//Предполагаем, что в алиасе лежит "shina-2009-zimnaya"
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://{$_SERVER['HTTP_HOST']}/shop/product/$alias");
}
else
{
//Если не найден алиас для указанного АйДи
}
}

alias - название поля, где лежит ЧПУ

items - название таблицы, где хранятся товары

id - название поля, где хранится АйДишник товара

Может не работать, но идея, надеюсь понятна;)

ideaman
На сайте с 25.01.2013
Offline
129
#5

Милованов Ю.С, Я немного с php не дружу... да и в целом с программированием не особо... но спасибо, до утра время есть, буду разбираться)

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