Joomla ошибка 404 как исправить

The most common problem with websites which are struggling in search engine rankings is the number of ‘not found’ errors – commonly referred to as 404 errors because that is the status code returned if the page cannot be found.

First, there are legitimate reasons to have 404 errors – if you have a page for an event which has passed, or a service which you no longer provide. In these cases, eventually the page will be removed from the index of search engines and won’t be associated with your site any more.

The problem occurs if you have a lot of 404 errors – for example if you unpublish a category which contained hundreds of articles. From the search engine’s perspective, this is not a great experience for their visitors, because they land on your site and the information that the search engine told them was there, isn’t. This is why it is not a great idea to have too many 404 errors on your site.

The first step is to find out how many you have – which can be done using Google’s Search Central. This is a free set of tools which allows you to analyse your website and pick up on problems, errors and issues quickly. It is recommended that you have every site you manage registered at Search Central to ensure you are notified in the event of any problems.

When you visit Search Central there is a section which shows you URL Errors in the search listing – this will show you a list of the 404 errors that Google has found on your site, and a graph which shows you how this has changed over time. If the graph starts to go up, look into why there are pages that were on your site and now can’t be found.

If there was a temporary problem on your site, you can mark errors as being fixed.

404discovery.png

Fixing Problems[edit]

Discovery is only one part of the process. Once you have discovered the problematic URLs, do something about it (if it needs fixing!) by either redirecting the page to another on the site, re-instating the original page, or looking into what has caused the 404 error.

If you need to redirect a page, check out this page which explains how to create 301 (permanent) redirects: Creating 301 redirects

Monitoring Problems[edit]

If you want to monitor your 404 traffic, the best way to do this in Analytics is to look at what happens when you have a 404 error. In most cases, the page title changes to 404 – so we can create a custom segment which will filter traffic with a title of 404 and tell you what the landing page is. This should allow you to monitor and proactively manage your 404 errors and ensure that your site visitors do not end up landing on dead links.

Analyticsalerts.png

Analyticsalerts2.png

Google also has the ability, in Analytics, to set up alerts. Alerts allow you to be emailed when certain events occur. In this case, we can set up an alert to be notified if there is more than a 5% increase in the number of 404 errors in a weekly period – which might mean we have a problem with the website which needs investigating.

This is a great way to keep on top of things even if you haven’t logged in to look at your dashboard!

Analyticsalertsemail.png

Monitoring Errors with a Dashboard[edit]

There is also a dashboard you can install called the Data Integrity Dashboard which shows you information about 404 errors, along with some other metrics which might be of interest. Just search the Google Analytics Gallery for Data Integrity Dashboard and select which profile to install it under.

Dataintegrity.png

Время на прочтение
2 мин

Количество просмотров 14K

image

Известно, что для того, чтобы удержать посетителя на сайте, нужно правильно обрабатывать HTTP/1.0 404 и другие подобные коды. На просторах интернета можно найти массу занимательных примеров страниц 404, а также руководств – что и как сделать, чтобы ошибка 404 правильно обрабатывалась сайтом как для посетителя, так и для поисковых систем.

Хочу с вами обсудить проблему 404 для сайтов Joomla.

Общие рекомендации по настройке Joomla для обработки HTTP/1.0 404

Не буду повторять здесь все причины тех или иных шагов и настроек, буду перечислять кратко то, что можно найти в Интернете.

  1. Создаем в нашей Joomla «красивую страничку 404». Можно несколько — при реализации вашей особенной логики и способа их выбора для
    посетителя;
  2. В свой шаблон, который используется на сайте в качестве основного шаблона frontend, из системного шаблона system переписываем файл error.php;
  3. Далее редактируем этот файл для того, чтобы следовать следующей логике – если мы отловили ошибку 404 – то сначала выдать заголовок HTTP/1.0 404, а затем выдать страницу, которую мы ранее подготовили. Предположим, номер (ID) нашей «красивой страницы 404» равен 1001. Файл error.php в вашем шаблоне может выглядеть так:

defined('_JEXEC') or die;

if (!isset($this->error))
{
	$this->error = JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR'));
	$this->debug = false;
}

// Get language and direction
$doc             = JFactory::getDocument();
$app             = JFactory::getApplication();
$this->language  = $doc->language;
$this->direction = $doc->direction;

if($this->error->getCode()=='404') {
	header("HTTP/1.0 404 Not Found");
	header('Location: index.php?option=com_content&view=article&id=1001');
}

Теперь проверяем. Вводим адрес сайта. Далее – абракадабра после символа /. Работает? Работает, чего и следовало ожидать.

В чем подвох?

Открываем отладку страниц в вашем любимом браузере (мой любимый браузер – Fitefox с Firebug-ом), вкладка «Сеть», и смотрим заголовки, которыми общается браузер с сайтом.

Вводим адрес сайта – заголовок HTTP/1.0 200 OK

Теперь абракадабра… Ожидаем HTTP/1.0 400 Not Found — смотрим заголовки:

  1. Сначала HTTP/1.0 302 Found
  2. Затем наша красивая страница отдается браузеру с кодом HTTP/1.0 200 OK

image

Чем это плохо?

— Но, ведь, работает? — Скажете вы. Да, работает. А как на это смотрит поисковая система?

Был у меня переезд страниц сайта с одного раздела (папки) сайта на другой. Но переехать должны были не все страницы. Страницы старого раздела сайта были в индексе. Те, что переехали – выдавались с кодом HTTP/1.0 301 Moved Permanently (классика жанра) и поисковики их правильно «переехали» на новое место. А те, что должны были «кануть в лету» – так и мелькали в индексе, хотя физически отсутствовали на сайте, а при обращении к ним выдавалась «красивая страничка 404», но не код HTTP/1.0 404 (смотрим выше).

Выход из этой ситуации

Для страниц с ошибкой 404 я решил выдавать заголовок HTTP/1.0 404 Not Found и делать не редирект через заголовок Location, а читать поток «красивой страницы 404» и перенаправлять его браузеру. Вот реализация:

if($this->error->getCode()=='404') {
	header("HTTP/1.0 404 Not Found");
	$url=JURI::root()."index.php?option=com_content&view=article&id=1001";
	$data = file_get_contents($url) or die("Cannot open URL");
    echo $data; 
}

Теперь, и нужная страница посетителю отдается при ошибке 404, и поисковая машина видет действительно код 404 и считает введенный адрес таковым — Not Found.

0 Пользователей и 1 Гость просматривают эту тему.

  • 17 Ответов
  • 31431 Просмотров

https://centrsveta.kz/ вот собственно этот сайт, захожу через админку то всё работает, сайт нормально грузиться и т.п и т.д, но кидаю ссылку друзьям они не могут зайти так как ошибка :
404 — Материал не найден

Вы не можете посетить текущую страницу по причине:
просроченная закладка/избранное
поисковый механизм, у которого просрочен список для этого сайта
пропущен адрес
у вас нет права доступа на эту страницу
Запрашиваемый ресурс не найден.
В процессе обработки вашего запроса произошла ошибка.

Пожалуйста, перейдите на одну из следующих страниц:
Домашняя страница
Что делать?? файл htaccess переименовал в txt всё равно не работает! Помогите уже 2 дня не могу решить проблемму, Joomla 2.5!

Как только выключите в общих настройках — вкладка сервер, SSL — все станет кошерно ! )

Записан

Зануда перфекционист, не признающий авторитетов, ищет легкую работу за большие деньги — http://dtkp.ru/ s@dtkp.ru

Как только выключите в общих настройках — вкладка сервер, SSL — все станет кошерно ! )

Выключил всё равно не помагает!

https://centrsveta.kz/ вот собственно этот сайт, захожу через админку то всё работает, сайт нормально грузиться и т.п и т.д, но кидаю ссылку друзьям они не могут зайти так как ошибка :
404 — Материал не найден

Вы не можете посетить текущую страницу по причине:
просроченная закладка/избранное
поисковый механизм, у которого просрочен список для этого сайта
пропущен адрес
у вас нет права доступа на эту страницу
Запрашиваемый ресурс не найден.
В процессе обработки вашего запроса произошла ошибка.

Пожалуйста, перейдите на одну из следующих страниц:
Домашняя страница
Что делать?? файл htaccess переименовал в txt всё равно не работает! Помогите уже 2 дня не могу решить проблемму, Joomla 2.5!

HELP HEEEEELP!

Ну тогда только полная аннигиляция сайта с дальнейшим обеззараживанием территории )))

Записан

Зануда перфекционист, не признающий авторитетов, ищет легкую работу за большие деньги — http://dtkp.ru/ s@dtkp.ru

Ну тогда только полная аннигиляция сайта с дальнейшим обеззараживанием территории )))

Что?) можно по русски)

Записан

Зануда перфекционист, не признающий авторитетов, ищет легкую работу за большие деньги — http://dtkp.ru/ s@dtkp.ru

Marques

Ну помоги, пожалуйста

Ну чего помогать-то ? В админке покуражились ? Все настройки поменяли как «нужно» ? Теперь-то что… теперь проще убить старушку, чем лечить (шутка) Ну что я могу посоветовать… эм-м-м.. а не почитать ли вам форум ? Здесь есть интересные решения !

Записан

Зануда перфекционист, не признающий авторитетов, ищет легкую работу за большие деньги — http://dtkp.ru/ s@dtkp.ru

Ну чего помогать-то ? В админке покуражились ? Все настройки поменяли как «нужно» ? Теперь-то что… теперь проще убить старушку, чем лечить (шутка) Ну что я могу посоветовать… эм-м-м.. а не почитать ли вам форум ? Здесь есть интересные решения !

Юзал поиск но не чего не нашёл) не подкините ссылочки %)

Ну не знаю я, ну дайте мне доступ в админку, в панель управления хостинга, пароли и явки по базе данных… я починю, но предупреждаю сразу… закину кучу ссылок в шаблон, и сделаю большущий бэкдор для себя любимого.

Записан

Зануда перфекционист, не признающий авторитетов, ищет легкую работу за большие деньги — http://dtkp.ru/ s@dtkp.ru

Ну не знаю я, ну дайте мне доступ в админку, в панель управления хостинга, пароли и явки по базе данных… я починю, но предупреждаю сразу… закину кучу ссылок в шаблон, и сделаю большущий бэкдор для себя любимого.

Не, спасибо, сам решу как нибудь)

Уф, слава яйц Богу. Удачи !

Записан

Зануда перфекционист, не признающий авторитетов, ищет легкую работу за большие деньги — http://dtkp.ru/ s@dtkp.ru

[Решено]Уррррря Разобрался) Дело было вот в чём) я создал материал что бы поместить на главную, он был в стандартной категории Samples-data помоему) потом я все категории удалил и создал новые, далее категория осталась в этом материале, и сервер просто напросто не мог найти эту категорию, зашёл в менеджер категорий и переставил на мою катагорию! Буду безумно рад если кто то тупанёт как я, и моё решение поможет им! ыыы) Marques Спасибо что уделил мне своё драгоценное времечко!)

Та-же беда была….Наклацал в меню «Менеджер меню: Редактирование пункта меню»   вкладка «Порядок»    снес главную, поставил обратно и все робит!

такая же хрень, просто какую то левую страницу назначил главной нажав не туда, и ошибка 404, затем вернул все в исходную позицию следующим образом: Менеджер меню: Пункты меню и галочкой пометил нужную страницу и нажал кнопку главная страницу

А мне не помогает((( Подскажите пожалуйста еще идеи ! ! ! ! ! ! ! ! ! !

зарегался, чтобы рассказать, как я решил этот вопрос.))
Не отображалась Главная страница. Вместо неё — ошибка 404. страница не найдена.

Тестировал категории, создавал, удалял… В общем Главная была в категории «1».
Эта категория была в корзине.
Поставил состояние «Опубликовано» и главная стала отображаться. Всё))

If someone visits a page that does not exist, then a server will return a 404 not found error. Broken links may have very bad impact on your website’s reputation, frustrate your visitors and result in smaller number of visits. That is why it is so important to avoid 404 error pages as much as possible.

Of course not all 404 errors messages on Joomla site are bad. If you have deleted an article or product because it was no longer relevant on your website, then 404 error for such content is fine. Google will simply remove that page from the search results after some time.

The things are different when 404 page not found error occurs for a content that is still present on your website but under a different URL address. This may happen, for example, when you update the article alias or category.

How to find 404 pages and broken links on a website?

There are many ways to determine the broken links on your website. Let’s take a look on how to find them using Google Search Console and Joomla’s Redirects Component.

Google Search Console

Google Search Console is a free web service that helps you monitor and maintain your website’s presence in Google Search results. It is a must have tool for each owner of a website. If it is your first contact with this tool, read more on how to get your site working on Search Console.

To find all issues that Google bots encountered during crawling of your website, you need to navigate to «Crawl -> Crawl Errors»:

404 Error Message on Joomla

Under the graph you will find a list of pages with errors. If you click on any of the items, you will get more information about the error page and where it was linked from:

Find and repair broken links

Joomla Redirects Component

Also Joomla gives us a possibility to manage 404 pages. Redirects component was introduced in Joomla 1.6 and it can be very useful, especially for small websites.

To see a list of of 404 pages go to «Components -> Redirects»:

Find and repair broken links

NOTE: Make sure you have enabled the «System — Redirect» plugin in «Extensions -> Plugins», otherwise the Redirects component will not collect any URL.

How to fix 404 pages and broken links on a website?

Once you have a list of broken links on your website you can proceed to fix them. The broken links you can repair by redirecting them to working pages.

Repair broken links using Joomla Redirects component

Let’s get back to the Joomla’s Redirects component. Beside the fact, the tool is collecting the broken links, it also allows to repair them. If you click on any broken URL from the list you will see this page:

Joomla redirects component

  1. The broken URL address
  2. The new URL address. The broken URL will be redirected to this one.
  3. Make sure the status is «Enabled»
  4. Click on «Save & Close»

301 redirect for broken links in .htaccess

Another way to repair a broken link is to make a 301 redirect in the .htaccess file.
To redirect a single URL you can add the following rule:

RewriteRule ^old-page$ /new-page [R=301,L]

This rule will simply redirect the old page:
http://www.your-domain.com/old-page
To the new page:
http://www.your-domain.com/new-page

To redirect all pages from old category to another, you can use the following rule:

RewriteRule ^old-category/(.*)$ /new-category/$1 [R=301,L]

This rule will redirect all pages from old category, like:
http://www.your-domain.com/old-category/some-article
http://www.your-domain.com/old-category/another-article
To the new category:
http://www.your-domain.com/new-category/some-article
http://www.your-domain.com/new-category/another-article

NOTE: Make sure you have the «URL Rewriting» option enabled in «System -> Global Configuration». Along with this option you need to rename the htaccess.txt file to .htaccess otherwise the redirect rule will not work.

Mark broken links as fixed in Google Search Console

Once you repair broken links, you can mark them as fixed in Google Search Console. This way you will remove these pages from the list.

Broken Links on Joomla site

If the broken link was not fixed, it will appear back on the list once Google crawl it.

SEO идеальная обработка 404 ошибки в Джумле

ПРОБЛЕМА

По умолчанию Joomla не умеет отдавать станицу 404 Not Found так, как рекомендуют поисковики. В интернетах есть несколько способов решения разной степени свежестии понятности, но нигде нет полного рецепта. Дело в том, что все рассказывают как вписать страницу 404 в шаблон, но никто не знает как организовать при этом правильный ответ сервера. По умолчанию Джумла отдает статус 302 — временно перемещено, или даже 200 — получено. А нам нужен 404 — не найдено. Решение ниже.

Создаем новую статью с заголовком ‘404 error’, публикуем её.

В текст вставляем что-то типа этого:

<h1>404 Не найдено</h1>
<p>Извините, такой страницы не найдено. Попробуйте поискать по содержанию</p>
<p><a href="/index.php?option=com_search&view=search">Поиск</a> | <a href="/">На главную страницу</a> | <a href="index.php?option=com_contact&amp;view=contact&amp;id=1&amp;Itemid=67">Контакты</a></p>

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

ДЕЛАЕМ ПУНКТ МЕНЮ

Джумла работает странно, и для того, чтобы назначить адресу алиас, нужно сделать невидимый пункт меню. Создаем новое меню, в нем делаем пункт ‘404’ с алиасом ‘404-error’, указывающий на нашу статью ‘404 error’. В настройках индексации выбираем NO INDEX, NO FOLLOW. Всё публикуем, сохряняем. Этого меню не будет нигде видно, но у нас теперь есть короткий адрес для нашей страницы 404, выглядит он так: site.ru/404-error или site.ru/404-error.html если вы включили суффиксы.

РЕДАКТИРУЕМ ШАБЛОН

В корне используемого вами шаблона должен лежать файл error.php. Если его нет, смело создаем.

Минимальное содержимое этого файла должно быть таким:

<?php
defined('_JEXEC') or die;
if (!isset($this->error)) {
    $this->error = JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR'));
    $this->debug = false;
}
//get language and direction
$doc = JFactory::getDocument();
$this->language = $doc->language;
$this->direction = $doc->direction;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>">
<?php
if (($this->error->getCode()) == '404') {
header("HTTP/1.1  404 Not Found");   
echo file_get_contents(JURI::root().'/404-error');
exit;
}
?>

Если в файле уже есть какой-то код, попробуйте сохранить его под другим именем и заменить моей версией. Потом по аналогии добавите обработку 403 ошибки если будет нужно.

Проверяем как всё работает, набирая различную абракадабру в адресной строке и коверкая адреса страниц. Все попытки перейти по несуществующему адресу должны приводить нас на страницу сайта с нашим шаблоном и текстом из статьи ‘404 error’. Если это не так, и все пункты проделаны верно, проблема в отключенной переадресации, не работающих seo-урлах (алиасах) или файле .htaccess.

ЗАКРЫВАЕМ СТРАНИЦУ 404 ОТ ИНДЕКСАЦИИ

В файл robots.txt добавляем секцию

Disallow: /404-error

А теперь главное: проверяем ответ сервера! Идем на http://mainspy.ru/otvet_servera и проверяем ответ на не существующую страницу. Он должен быть HTTP/1.1 404 Not Found. Именно этого мы и добивались — поисковик или бот должен однозначно понимать, что перешел по битой ссылке и нечего здесь индексировать.

Всё работает для версии Джумлы 3.4 c установленным компонентом К2. В других версиях и без K2 возможно будет не так, но принцип понятен.

Возможно, вам также будет интересно:

  • Joomla отключить сообщения об ошибках
  • Joomla отключить вывод ошибок php
  • Joomla выдает ошибку error
  • Joomla включить отображение ошибок
  • Joomla callback ошибка защиты от спама

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии