Myengine

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

2 месяца назад nezombi

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

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

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

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

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

Surfyk 1 месяц назад

Хотя, это не правильно, т.к. в 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

Surfyk 1 месяц назад

Или так

<?php

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

exit();

?>

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

Surfyk 1 месяц назад

Есть еще один вариант редиректа в файле 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>

Surfyk 1 месяц назад

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

nezombi 1 месяц назад

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

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

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

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

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

Surfyk 2 месяца назад

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>

nezombi 2 месяца назад

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

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

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

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

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

nezombi 2 месяца назад

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

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

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

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

Ivan 2 месяца назад

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

Surfyk 2 месяца назад

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