DANNEO CMS

Danneo CMS 1.5.x => Ошибки => Тема начата: sovyonok от 30 Января 2018, 20:36:57

Название: Страница 404
Отправлено: sovyonok от 30 Января 2018, 20:36:57
Похожая тема есть в ветке 0.5.х, но подозреваю, что вопрос был именно о новой версии.

При переходе по адресу сайт.ру/абсолютно_произвольный_набор_символов в браузер отдается главная страница.
Проверил яндексом ответ сервера - выдает 404, как надо.

Что не так?

Похожая но обратная ситуация была с gzip'ом, до фикса. Но там касалось всех страниц.
Название: Re: Страница 404
Отправлено: sovyonok от 09 Февраля 2018, 22:37:17
Заметил закономерность. Ошибка возникает, если в несуществующем URI содержится точка.
Название: Re: Страница 404
Отправлено: sovyonok от 13 Февраля 2018, 15:57:08
Не смог воспроизвести баг на локальном сервере.
Осталось подтвердить еще одну версию, что дело в домене 3-го уровня.

Параллельно обнаружил, что на страничке 404 нет ссылки на главную страницу сайта. Т.е. в исходных кодах href="".

Лечится в файле core/classes/Template.php сменой порядка в функции array_merge.

	/**
* Парсинг шаблонов, возврат значений
*/
public function parse($var, $contents)
{
global $lang, $config, $api;

$sub = array
(
'site_url' => rtrim(DNROOT, '/'),
'self_url' => FULL_REQUEST_URI,
'site_temp' => $config['site_temp'],
'site' => $config['site'],
'lang' => $config['langcode']
);

$newkey = $newval = array();
$result = array_merge($sub, $var);
Название: Re: Страница 404
Отправлено: User от 13 Февраля 2018, 20:38:59
Лечится в файле core/classes/Template.php сменой порядка в функции array_merge.
Спасибо!
Использовал второй вариант. По первому - отключилась вся графика сайта шаблона.
Название: Re: Страница 404
Отправлено: sovyonok от 14 Февраля 2018, 10:11:20
Цитировать
Использовал второй вариант. По первому - отключилась вся графика сайта шаблона.

Сам так попал))
Потом поправил свой пост.
Название: Re: Страница 404
Отправлено: sovyonok от 14 Февраля 2018, 11:47:04
Докопался до ответа на свой вопрос.

Проблема кроется в файле core/classes/Router.php. Функция parsing.

		/**
* 404 - Not Found
*/
if (empty($_REQUEST) AND ! empty($this->uri))
{
$this->_404();
}

В случае (моем) наличия куков с сайта (а при установленном счетчике яндекса они будут) массив $_REQUEST не будет пустым, и условие не сработает.
Возможно, в данном случае требуется более точная проверка.