Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2013, 11:00   #1
Небесный
Зелень
Форумчанин
 
Аватар для Небесный
 
Регистрация: 03.02.2007
Сообщений: 302
По умолчанию php редирект по условию.

Добрый день, уважаемые форумчане.
Прошу помочь разобраться с одной проблемкой.

есть урл на конце такого вида ?id=279;page=1 или ?id=279;page=2
Как можно с помощью php сделать редикрет на ?id=279

Код:
if (isset($_GET['page'])){
    	header("HTTP/1.1 301 Moved Permanently");
    	header("Location: ./wievjob.php?id=".$_GET['id']);
}
К сожалению даное условие не срабатывает, но срабатывает при ?id=279&page=1, тоесть со знаком разделителя &.

Как все же сделать редирект, если разделитель между параметрами ;

Большое спасибо за помощь.
Небесный вне форума Ответить с цитированием
Старый 24.09.2013, 12:28   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

обрабатывать урл, а не пытаться через GET разделить
Код:
$urls = explode(";",$_GET['id']);
header("Location: ./wievjob.php?id=".$urls[0]);
ADSoft вне форума Ответить с цитированием
Старый 24.09.2013, 13:01   #3
Небесный
Зелень
Форумчанин
 
Аватар для Небесный
 
Регистрация: 03.02.2007
Сообщений: 302
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
обрабатывать урл, а не пытаться через GET разделить
Код:
$urls = explode(";",$_GET['id']);
header("Location: ./wievjob.php?id=".$urls[0]);
Но, ведь нужно условие, по какому нужно делать редирект. То, что именно подставить в редирект - это не проблема.

Пока выкрутился таким вот образом.

Код:
$maspr = explode("=",strstr($_SERVER['REQUEST_URI'], ";page="));
if ( $maspr[0] == ";page" )	{
        session_write_close();
	header("HTTP/1.1 301 Moved Permanently");
    	header("Location: ./wievjob.php?id=".$id);
    	exit();
}
Но, чет чует моя душа, что это не очень хороший способ проверки.
Небесный вне форума Ответить с цитированием
Старый 24.09.2013, 14:14   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Нужно использовать в GET-параметрах специально предназначенный для этого разделитель – амперсанд (&).
Тогда ничего не придется выдумывать, проверил $_GET['page'] – и порядок.
Andkorol вне форума Ответить с цитированием
Старый 24.09.2013, 14:32   #5
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

2Небесный, вы ничего не говорили что нужны какие то условия
то что я привел код - решает вашу задачу
Цитата:
Код:
есть урл на конце такого вида ?id=279;page=1 или ?id=279;page=2
Как можно с помощью php сделать редикрет на ?id=279
но так же решает и
Код:
?id=279;все что угодно=145; итд
.. формулируйте точнее задачи, и используйте стандартные разделители
ADSoft вне форума Ответить с цитированием
Старый 24.09.2013, 15:29   #6
Небесный
Зелень
Форумчанин
 
Аватар для Небесный
 
Регистрация: 03.02.2007
Сообщений: 302
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Нужно использовать в GET-параметрах специально предназначенный для этого разделитель – амперсанд (&).
Тогда ничего не придется выдумывать, проверил $_GET['page'] – и порядок.
Эх, я знаю. ))) Но в индексе уже куча ссылок именно с таким адресом, а терять посещаемость не хочется на уже проиндексированных страницах.
Небесный вне форума Ответить с цитированием
Старый 24.09.2013, 15:54   #7
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
По умолчанию

Если веб сервер apache, то http://httpd.apache.org/docs/current...remapping.html
dr.Chas вне форума Ответить с цитированием
Старый 24.09.2013, 16:18   #8
Небесный
Зелень
Форумчанин
 
Аватар для Небесный
 
Регистрация: 03.02.2007
Сообщений: 302
По умолчанию

К сожалению не хватает мозгов придумать регулярку для htaccess для редиректа.
Небесный вне форума Ответить с цитированием
Старый 26.09.2013, 20:22   #9
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

RewriteCond %{QUERY_STRING} ^id=([0-9]+);page=[0-9]+$
RewriteRule . index.php?id=%1
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 26.09.2013, 20:33   #10
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

Если page= всегда в конце стоит, то должно сработать что-то вроде этого:
RewriteRule ^(.+);page=[\d]+ $1
^-.-^ My GitHub
Fenex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Редирект 301 с index.php**** на name-page.html new player PHP 0 30.10.2012 13:08
Редирект на index.php exelim PHP 1 28.09.2012 20:54
Редирект danil123 Общие вопросы Delphi 12 12.07.2012 08:34
Редирект через php AkellaAkella PHP 3 31.08.2011 14:43
Редирект 4ok JavaScript, Ajax 2 26.07.2011 15:47