@yura_born

Как сделать redirect по значению в командной строке?

Стоит задача проверять перед редиректом, в урле есть какой-нибудь хвост с параметрами ?param=value... если хвост есть, то ридериктить страницу.
к примеру site.ru/contacts?param=123
нужно редиректить на site.ru/contacts/?param=123

сделал так:
if (!strpos($_SERVER['REQUEST_URI'], '?param') === false) {
    $paramStr = substr($_SERVER['REQUEST_URI'],strpos($_SERVER['REQUEST_URI'], '?param'));
    $requestWithOutParam = substr($_SERVER['REQUEST_URI'],0,strpos($_SERVER['REQUEST_URI'], '?param'));

    $pageURL = 'http://www.site.ru'.$requestWithOutParam.'/'.$paramStr;
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: ". $pageURL);
    exit();
}


т.е. я проверяю если есть ?param, то я добаляю слеш, но проблема в том что после редиректа опять идет проверка и естественно опять в урле находится ?param уже со слешем правда и опять все по кругу.... Подскажите, может кто сталкивался, как пофиксить? Спасибо.
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
DevMan
@DevMan
сделайте редирект на site.ru/contacts/?param=123&redirected=1 и проверяйте есть ли параметр redirected.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@yura_born Автор вопроса
DevMan, спасибо, да, наверное по другому и не получится

в итоге сделал так, может кому пригодится:

if (!strpos($_SERVER['REQUEST_URI'], '?param') === false) {
    $request_uri = $_SERVER['REQUEST_URI'];
    $dopParam='&redirected=1';
    $paramStr = substr($request_uri,strpos($request_uri, '?param'));
    $requestWithOutParam = substr($request_uri,0,strpos($request_uri, '?param'));

    if(!strpos($request_uri, '&redirected=1') === false) {
        return true;
    }
    elseif(!strpos($request_uri, '/?param') === false){
        $pageURL = 'http://www.site.ru'.$requestWithOutParam.$paramStr.$dopParam;
    }
    elseif(!strpos($request_uri, '?param') === false){
        $pageURL = 'http://www.site.ru'.$requestWithOutParam.'/'.$paramStr.$dopParam;
    }

    header("HTTP/1.1 301 Moved Permanently");
    header("Location: ". $pageURL);
    exit();
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы