mainurl дополнение

Анализируя файл error_log моего сайта на предмет ошибок, я заметил много ошибок такого вида:

PHP Fatal error: Call to a member function getBlog() on a non-object in /xxxxxxxxx/plugins/mainurl/classes/hooks/HookMainurl.class.php on line 44

Ошибка появляется тогда, когда идёт запрос на несуществующий url (например при ручной смене url, поисковики продолжают ходить на старый).

Решение:

Файл: mainurl\classes\hooks\HookMainurl.class.php

Заменяем метод InitAction()


    public function InitAction()
    {
        $sUrl = @$_SERVER['REDIRECT_URL'];
        $aParamsNew = Router::GetParams();

        if (Router::GetAction() == 'error' and substr_count($sUrl, '.html') == 1 and substr_count($sUrl, '/blog/') == 1) {
            $aParams = explode('/', trim($_SERVER['REDIRECT_URL'], '/'));
            $iStrLen = strlen($aParams[count($aParams) - 1]);
            $sUrl = substr($aParams[count($aParams) - 1], 0, $iStrLen-5);
            $oTopic = $this->Topic_GetTopicByUrl($sUrl);
            if (count($aParams) == 3) {
                if (isset($oTopic)) {
                    Router::Action('blog', $oTopic->getBlog()->getUrl(), array($oTopic->getId() . '.html'));
                } else {
                    Router::Action('error','404');
                }
            }
            else
                Router::Action('blog', $oTopic->getId() . '.html', array());
        }
    }


Как видно, просто добавил проверку на isSet и если топика нет — переход на 404.
Плюс этого в том, что поисковики быстрее поймут, что страница уже не доступна, а в лог избавится от кучи ошибок.

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.