Если вам нравится SbUP Форум, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....

 

Страница 404

Автор alexburn, 08-11-2016, 13:41:36

« назад - далее »

alexburnTopic starter

Приветствую, ребята! Такой вопросик. Как заставить страницу выдавать 404 ? Т.е. есть страница 404, по началу она выдавала 200 (что естественно не правильно), настроил редирект на 404 страницу, но код ответа выдает 302. Вот у меня и вопрос, что в статичной странице html нужно прописать (а может и в другом месте), чтобы выдавало код - 404 ?


borzoid

в .htaccess прописывай


alexburnTopic starter

borzoid, так я там и прописал, только выдает код временного перенаправления. Тут дело видимо в другом, т.к. сайт на CMS

borzoid

alexburn, тогда вообще не проблема. На php просто дайте по условию if такой то урл, то давать 404 заголовок. Я то думал там банaльная страничка html как вы и писали. Если на cms то вообще проблем быть не должно. Вы же прогер - разберетесь

alexburnTopic starter

#4
Цитата: borzoid от 08-11-2016, 14:51:08Вы же прогер - разберетесь
Хотелось бы готовое уже :)) , но все-равно спасибо :) .
Боле-менее разобрался. Вот код страницы, отвечающий за вывод 404, по сути все просто, но что-то туплю:

// no direct access
defined('_JEXEC') or die('Restricted access');
// get warp
$warp = require(__DIR__.'/warp.php');
// set messages
$title   = $this->title;
$error   = $this->error->getCode();
$message = $this->error->getMessage();
// set 404 messages
if ($error == '404')
{
   $title   = JText::_('TPL_WARP_404_PAGE_TITLE');
   $message = JText::sprintf('TPL_WARP_404_PAGE_MESSAGE', JURI::root(false), $warp['config']->get('site_name'));
}
// render error layout
echo $warp['template']->render('error', compact('title', 'error', 'message'));

Вот хотелось бы узнать у веб-кодеров, как его отредактировать, чтобы выдавалась моя страница с ошибкой 404

Может удалить все (а так же редирект в httaccess) и оставить что-то типа:

// no direct access
defined('_JEXEC') or die('Restricted access');
$error   = $this->error->getCode();
if ($error == '404')
{
echo моя_страница_404.html
}


Добавлено: 08-11-2016, 15:08:04


Или можно вот так:

// no direct access
defined('_JEXEC') or die('Restricted access');
if  ($this->_error->get('code') == '404')
{
header("HTTP/1.0 404 Not Found");
header('Location: /моя_страница_404.html');
exit;
}


alexburnTopic starter

#5
Победил, теперь перенаправления 302 нет :) и страница выдает 404

$error   = $this->error->getCode();
// set 404 messages
if ($error == '404') {
   header('Location: /404.html', TRUE, 404);
   exit;
}


Добавлено: 11-11-2016, 09:39:51


Но вот засада, что-то не подставляется моя страница с ошибкой :(

ВикторияИ

Цитата: alexburn от 11-11-2016, 09:35:51Но вот засада, что-то не подставляется моя страница с ошибкой

не разбираюсь в php, но может Вам подойдет вариант моей настройки:

Errordоcument 404 http://www.site.com/404.php


alexburnTopic starter

ВикторияИ, у вас при 404 вызывается динамическая страница 404.php, а у меня статическая - html. Видимо у вас в 404.php как раз и определяется нужная страница с ошибкой. Можете полный код выложить 404.php ?


ВикторияИ

Цитата: alexburn от 11-11-2016, 11:45:24Можете полный код выложить 404.php

обычная html страница - php там только инклюды, поэтому и расширение файла такое...
...без htacces 404 страница не срабатывает...


несколько раз перечитала Ваш пост, и не совсем понимаю проблемы  ::)
как то была на каком то сайте подобная проблема, и почему то страница 404.html не срабатывала, но выставив разрешение разрешение htm все сработало - т.е. файл был 404.htm  а не 404.html

Старый

alexburn, строка, которую дала ВикторияИ пишется в .htaccess
Это команда серверу, если страница не найдена, то показывать не серверную заглушку, а вашу, которую вы сами нарисуете.
Расширение файла может быть любым.



Если вам нравится SbUP Форум, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....