Intereting Posts

PHP – отображение ошибки 404 без перенаправления на другую страницу

Я хочу показать ошибку 404, если пользователь достигает страницы, которая существует, но я не хочу, чтобы он / она видели.

Я не хочу делать перенаправление (это приведет к тому, что адресная строка отобразит ссылку страницы ошибки в адресной строке), как показано ниже:

if ($this_page_should_not_be_seen) header("Location: err.php?e=404"); 

Вместо этого должно показаться, что страница действительно не существует, без изменения URL-адреса в адресе браузера.

Solutions Collecting From Web of "PHP – отображение ошибки 404 без перенаправления на другую страницу"

Включите страницу с ошибкой на текущей странице и отправьте код ошибки 404:

 <?php if ($nobody_should_ever_be_here) { header('HTTP/1.1 404 Not Found'); //This may be put inside err.php instead $_GET['e'] = 404; //Set the variable for the error code (you cannot have a // querystring in an include directive). include 'err.php'; exit; //Do not do any more work in this script. } ?> 

Обратите внимание, что это следует использовать, если страница никогда не должна отображаться. Лучший код состояния для несанкционированного доступа (если страница должна отображаться некоторыми зарегистрированными пользователями) составляет 403 (не авторизован).

Вы можете достичь 404 (или любого другого кода ответа HTTP действительно) программно с

 header('HTTP/1.0 404 Not Found'); die; 

По моему опыту, лучший способ показать 404 документ ошибки без изменения URL-адреса – определить документ ошибки в файле apach .htaccess :

 RewriteEngine on RewriteBase / # Defines 404 error pages content: ErrorDocument 404 /my_root/errors/404.html # for all invalid links (non existing files): RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* - [L,R=404] # for some valid links (existing files to be un-accessible): RewriteCond %{THE_REQUEST} ^.*some_file.php.*$ [NC] RewriteRule .* - [L,R=404] 

То, что вы пишете, затрудняет нам понимание.

Я хочу перенаправить любого входящего пользователя на страницу ошибок 404, если он / она достигает страницы, на которую я не хочу, чтобы он достиг.

Итак, человек достигает страницы, которая существует?

Если человек достигает, например, защищенной страницы, которую он / она не поддерживает, чтобы видеть. Использование заголовка – лучший способ. Ваши варианты – эхо метаобновление или javascript, но заголовок намного чище. Вы могли бы показать что-то вроде You do not have permission to do that! который довольно распространен в Интернете. Если вы не хотите перенаправлять, вы можете отобразить 404 «поддельное сообщение» через заголовок.

Если вы говорите о том, что кто-то достиг 404 страницы, файл, который не существует, вы можете использовать только .htaccess

вы можете направить свою страницу на 404

header («Местоположение: http://www.website.com/errors/404.php »);