Как сделать редирект ?

[Удален]
585

Меняю движок сайта, но не могу разобраться как делают редиректы, насколько я понял из прочитанного мне нужен 301 редирект для переноса веса проиндексированных страниц на новые, но как всё это сделать на практике не имею не малейшего понятия :confused:

Подскажите кто в этом разбирается, сейчас ссылки имеют такой вид:

мойсайт.ru/index.php?categoryID=2

а будет:

мойсайт.ru/category_2.html

Вот чего я не как не могу понять, это как перенаправлять трафик и вес с несуществующих страниц(после удаления старого движка) на новые, понятно если старые страницы существовали бы физически, то туда можно было бы вписать код какого нибудь редиректа, а что делать если их уже не будет после сноса старого и загрузки нового движка????

Научите пожалуйста :rolleyes:

Jefa
На сайте с 01.02.2007
Offline
191
#1

На php:

<?
$ref=$_SERVER['QUERY_STRING'];
if ($ref!='') $ref='?'.$ref;
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://newdomain.com/'.$ref);
exit();
?>
Shtogrin
На сайте с 02.11.2006
Offline
95
#2

через index.php

<?php

if(!empty($_GET['categoryID']))
{
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://newdomain.com/category_{$_GET['categoryID']}.html");
exit(0);
}
// редирект на главную, если index.php не используется в новом сайте
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://newdomain.com/");
exit(0);
?>

или через mod_rewrite

RewriteEngine On

RewriteCond %{QUERY_STRING} ^categoryID=([0-9]+)
RewriteRule ^index.php$ /category_%1.html? [R=301]
www.shtogrin.com (http://www.shtogrin.com/). Канцтовары (http://www.invit.com.ua/). 1С Бухгалтерия (http://account.kiev.ua/).
Jefa
На сайте с 01.02.2007
Offline
191
#3

Хотя наверное поспешил, так в вашей ситуации не пойдет.

Надо делать замену примерно так.

<?php
$url = $_GET['ID'];
header("Location: http://мойсайт.ру/category_{$url}.html");
?>
Jefa
На сайте с 01.02.2007
Offline
191
#4

Shtogrin, а мой последний вариант не прокатит?

ps давно не практиковался, мож чего и подзабыл :)

Shtogrin
На сайте с 02.11.2006
Offline
95
#5

Jefa, подойдет. Только проверочку вставить на наличие аргумента и сам аргумент не "ID", а "categoryID". Ну и заголовок header('HTTP/1.1 301 Moved Permanently'); тоже нужен, как в первом Вашем примере.

[Удален]
#6

Да, забыл указать, что у меня на новом движке индексный файл под зендом, поэтому видимо можно сделать только через .htaccess и если я правильно понял, то из предлженных вариантов подойдёт только способ предложенный Shtogrin, т.е.

RewriteEngine On
RewriteCond %{QUERY_STRING} ^categoryID=([0-9]+)
RewriteRule ^index.php$ /category_%1.html? [R=301]

это нужно просто добавить в .htaccess и всё?

Shtogrin
На сайте с 02.11.2006
Offline
95
#7
bankiroff:
это нужно просто добавить в .htaccess и всё?

Да в корневой .htaccess

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