avatar
На сайте уже 594 пользователя

"Ошибка 404" в виде страницы сайта

nezombi(4 года назад)

Не получается сделать 404.html в виде страницы сайта. Нужно чтобы сообщение об ошибке выводилось в виде, например, новости.

Вернуться назад к другим темам

Ответы пользователей

Чтобы оставлять сообщения необходимо авторизоваться
avatar
Denis 4 года назад

А редирект в META-тегах не подходит?

avatar
Surfyk 4 года назад

Хотя, это не правильно, т.к. в htaccess прописан путь до файла 404.html и бот открыв его должен увидеть содержание. Поэтому более правильным будет вариант

<?php

header('Refresh: 0; URL=/Oshibka_404');

exit();

?>

<!DOCTYPE html>

<html lang="ru">

<head>

<meta charset="utf-8">

<title>Page Not Found</title>

</head>

<body>

<h1 style="text-align:center;">ERROR 404<br><br>Page Not Found</h1>

<p style="text-align:center;"><a href="/">Перейти на главную страницу сайта</a></p>

</body>

</html>

При прямом переходе до файла /pages/404.html он будет открываться как обычный файл html, обозначая тем самым боту что файл ошибки 404 существует и находится по такой ссылке.

В движке же файл 404.html не открывается по прямой ссылке, а подгружается через загловок

header(PROTOCOL.' 404 Not Found'); require('./pages/404.html'); ob_end_flush(); exit();

В этом случае будет работать редирект на созданную страницу ошибки по ссылке /Oshibka_404

avatar
Surfyk 4 года назад

Или так

<?php

header('Refresh: 0; URL=/Oshibka_404');

exit();

?>

т.к. дальнейший код в файле не имеет смысла

avatar
Surfyk 4 года назад

Есть еще один вариант редиректа в файле 404.html

<?php

header('Refresh: 0; URL=/Oshibka_404');

ob_end_flush(); exit();

?>

<!DOCTYPE html>

<html lang="ru">

<head>

<meta charset="utf-8">

<title>Page Not Found</title>

</head>

<body>

<h1 style="text-align:center;">ERROR 404<br><br>Page Not Found</h1>

<p style="text-align:center;"><a href="/">Перейти на главную страницу сайта</a></p>

</body>

</html>

avatar
Surfyk 4 года назад

Решение сырое, спору нет, но это как идея, а в каждой идеи все сразу не учтешь. Хотя, практически любое решение этого вопроса путем внесения изменений в файл 404.html имеет один недостаток. При первом же обновлении все откатится к дефолтному варианту, в дальнейшем об этом нужно всегда помнить и вовремя "обновлять обновление" :)

avatar
nezombi 4 года назад

Surfyk, работает! Только теперь у этой страницы подвал отвязан от нижнего края экрана и прокручивается выше чем положено ))

Но всё равно спасибо :)

УПС! А если не ткнуть по ссылке, а тыкать другие, то адрес в строке показывается тот же. Он не менятся. И если обновить страницу, снова попадёшь на страницу ошибки :(

С внешними ссылками вообще беда.

Нет. Пока пусть будет переадресация.

avatar
Surfyk 4 года назад

nezombi, нужно создать страницу Ошибка 404 с идентификатором Oshibka_404. В текстовый редактор вставить код

<h2>Такой страницы на сайте нет.</h2>

<p><a href="/" onclick="parent.document.location.href='/';return false;">Перейти на главную страницу сайта</a></p>

Затем код файла 404.html в папке pages заменить на

<!DOCTYPE html>

<html lang="ru">

<head>

<meta charset="utf-8">

<title>Page Not Found</title>

<style>

body{margin:0;padding:0;}

.thumb-wrap {

position: relative;

padding-bottom:100%;

height: 0;

overflow: hidden;

}

.thumb-wrap iframe {

position: absolute;

top: 0;

left: 0;

width: 100%;

height: 100%;

border-width: 0;

outline-width: 0;

}

</style>

</head>

<body>

<div class="thumb-wrap">

<iframe name="iframe_a" src="/Oshibka_404" width="100%" height="100%" style="border:0;">Ваш браузер не поддерживает плавающие фреймы!</iframe>

</div>

</body>

</html>

avatar
nezombi 4 года назад

Видимо ооочень маленькая ошибка где-то есть. На одном сайте работает, на другом нет.

Оба сайта на поддомене одного основного домена. Оба на одном хостинге. У обоих включен SSL

Скопировал .htaccess и префикс страницы 404.html, с рабочего сайта на другой. Не помогает.

Куки почистил.

Переадресация в файле pages/404.html работает. Но это не то. Удалять всю страницу тоже пробовал.

avatar
nezombi 4 года назад

Ivan, Лучший вариант. Спасибо!

Создал страницу с идентификатором 404.html, а в файле .htaccess изменил путь, с /pages/404.html на /404.html

То есть, теперь текст "Такой страницы на сайте нет. Вернуться на главную страницу" показывается на обычной странице сайта. Слева актуальное меню, справа рекламный блок, а вверху шапка последнего обновления.

Вопрос закрыт :)

avatar
Ivan 4 года назад

В файле pages/404.html можете сделать переадресацию на нужную страницу

avatar
Surfyk 4 года назад

Не понятно что значит в виде "новости". При выводе ошибки используется один файл 404.html для всех возможных случаев. Его можно оформить как угодно. Если вы хотите сделать оригинальный вывод ошибки для новостей, то нужно создать свой файл и прописать путь до этого файла в коде вывода новости.

Вступайте в нашу группу https://vk.com/myengine