PHP перенаправить 503 без изменения URL - PullRequest
0 голосов
/ 23 марта 2011

я выполняю парсинг URL в самом верху моей страницы с картинкой, прежде чем что-то выводить:

foobar.com/pictures.php/2134613514/nice-sunset

Если что-то пойдет не так по какой-либо причине, я хочу отправить пользователя на мою страницу с ошибкой.

Для 404, 403 и т. Д. Я перенаправляю на ту же страницу, используя .htaccess, что легко:

ErrorDocument 401 /error.php?e=401
ErrorDocument 402 /error.php?e=402
ErrorDocument 403 /error.php?e=403

Итак, что я делаю в pictures.php:

try
{
    // parse PATH_INFO, grab image from db, ...
}
catch (Exception $e) // if that goes wrong for any reason
{
    whack_error_to_log( $e );
    header("Location: /error.php?e=503");
    exit();
}

Меня поразило то, что пользователь увидит foobar.com / error.php? E = 503 в качестве URL, я бы хотел, чтобы он увидел foobar.com / pictures / 2134613514 / nice-sunset , поскольку в идеале этот URL будет возвращаться, как только я обнаружу ошибку ...

Ответы [ 2 ]

2 голосов
/ 23 марта 2011

попробуйте это:

try
{
    // parse PATH_INFO, grab image from db, ...
}
catch (Exception $e) // if that goes wrong for any reason
{
    whack_error_to_log( $e );
    $_GET['e'] = 503;
    include 'error.php';
    exit();
}

это взломать, но оно должно работать

1 голос
/ 23 марта 2011

Включите файл сценария вместо перенаправления на него:

whack_error_to_log( $e );
$_GET['e'] = '503';
include 'error.php';
exit();
...