Нужен необычный скрипт редиректа

L
На сайте с 20.10.2011
Offline
8
1037

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

siv1987
На сайте с 02.04.2009
Offline
427
#1

<?php


/*
* Url куда редиректим обязательно должен
* быть последним в списке
*/
$redir = array(
array(
'/request_url_1',
'/url_to_redirect_1',
),
array(
'/request_url_2',
'/request_url_2_2',
'/url_to_redirect_2',
)
);

$uri = $_SERVER['REQUEST_URI'];
foreach( $redir as $r )
{
$url = array_pop( $r );
if( count($r) > 1 )
{
foreach( $r as $v ){
if( $uri == $v ){
header( 'Location: '.$url, true, 301 );
exit;
}
}
}
else
{
if( $uri == $r[0] ){
header( 'Location: '.$url, true, 301 );
exit;
}
}
}

/* Общий редирект */
header( 'Location: /index.php', true, 301 );
exit;

?>

Кто хочет может добавить себе поддержку регекспов

L
На сайте с 20.10.2011
Offline
8
#2

Спасибо за быстрый ответ.:)

Подставил




<?php

/*
* Url куда редиректим обязательно должен
* быть последним в списке
*/
$redir = array(
array(
'/мы-предлагаем/теплицы-и-парники',
'http://moysait.ru/teplitsy-i-parniki/',
),
array(
'/материалы/теплицы',
'http://moysait.ru/teplitsy/',
)
);

$uri = $_SERVER['REQUEST_URI'];
foreach( $redir as $r )
{
$url = array_pop( $r );
if( count($r) > 1 )
{
foreach( $r as $v ){
if( $uri == $v ){
header( 'Location: '.$url, true, 301 );
exit;
}
}
}
else
{
if( $uri == $r[0] ){
header( 'Location: '.$url, true, 301 );
exit;
}
}
}

/* Общий редирект */
header( 'Location: http://moysait.ru', true, 301 );
exit;

?>
в ответ получаю Parse error: syntax error, unexpected T_VARIABLE in /.../index.php on line 1

Может я чтото не так сделал? правда у меня входящие ссылки на кирилице но по идее должно работать.

siv1987
На сайте с 02.04.2009
Offline
427
#3
unexpected T_VARIABLE in /.../index.php on line 1

Что у вас на первой строчки?

Если вставляете в скрипт, тогда подразумевается что теги php - <?php ?> нужно убрать (отсюда, не из файла если что)

Перед этим кодом не должно быть вывод текста в браузере (особенно пустых строк перед <?php), так как не сможете отправить заголовки.

А для кириллицы это $uri = $_SERVER['REQUEST_URI'];

замените на $uri = urldecode( $_SERVER['REQUEST_URI'] );

L
На сайте с 20.10.2011
Offline
8
#4
siv1987:
Что у вас на первой строчки?
Если вставляете в скрипт, тогда подразумевается что теги php - <?php ?> нужно убрать (отсюда, не из файла если что)
Перед этим кодом не должно быть вывод текста в браузере (особенно пустых строк перед <?php), так как не сможете отправить заголовки.

<?php открытие кода php

Все вопрос снят спасибо за помощь

siv1987
На сайте с 02.04.2009
Offline
427
#5
lakshmi:
Подставил
'/мы-предлагаем/теплицы-и-парники',
'http://moysait.ru/teplitsy-i-parniki/',

Здесь проще написать функцию транслита, проверять если в урл есть кириллические символы, транслитерировать его и делать редирект. И не нужно по одному адресу перечислять каждый урл.

L
На сайте с 20.10.2011
Offline
8
#6
siv1987:
Здесь проще написать функцию транслита, проверять если в урл есть кириллические символы, транслитерировать его и делать редирект. И не нужно по одному адресу перечислять каждый урл.

проблема в том что не совпадают url даже при переводе в латиницу это не поможет

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