2009-10-25 4 views
0

На моем сайте, website.com/downloads фактически отправляется на сайт.com/index.php?page=downloads (с перепиской apache). У меня есть настраиваемая 404 не найденная страница ошибок. Если я делаю website.com/dkfjf/fdf, он переходит к ошибке 404, но если я делаю website.com/something, он переходит к index.php? Page = что-то, поэтому в моем index.php, как я могу сделать его просто перейти к ошибке 404, после того, как я определяю, нет ли страницы something? Потому что прямо сейчас я просто загружаю страницу 404 ошибок в главный div (как и все другие страницы), но она несовместима (например, она все еще отображает website.com/soemthing в адресной строке, и есть другие проблемы), и я просто хотите, чтобы он переместился к ошибке 404. Как я могу это сделать?PHP перейдите на страницу с ошибкой

EDIT: это работает:

echo '<meta http-equiv="refresh" content="0; url = /error" />'; 

(mywebsite.com/error переписывает на index.php страницу = ошибка, моя страница ошибки 404?). Это плохой подход?

ответ

3

Используйте header function послать правильный код состояния:

header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found', true, 404); 

Затем вы можете отправить документ об ошибке с readfile, если это статический файл или include, если это PHP-файл.

+0

@ Mk12: Вы должны убедиться, что не было выхода, прежде чем вы вызываете 'header'. В противном случае заголовок HTTP не может быть изменен, так как он отправляется вместе с первым выходом. Вы можете использовать выходной контроллер для буферизации вывода (см. Http://php.net/manual/en/book.outcontrol.php). – Gumbo

+0

Не могу ли я каким-то образом сделать navigate_url ("/ error")? (website.com/error отправляется на index.php? page = error, что соответствует моей странице ошибок 404, но я хочу/ошибка отображаться в адресной строке. – mk12

+0

Невозможно перейти к URL-адресу как будто это была ссылка? – mk12

Смежные вопросы