Forums / National / Russian / Тех. поддержка / Редиректы и SEO

<<<12

Macik
#16 2012-05-11 23:41
#34277 Oughtem:

о чём это говорит? я не понял

О том, что несуществующая ссылка содержащая русские буквы обрабатывается корректно и движок отдает 404 ошибку.

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
Moool13
#17 2012-05-12 07:54

Еще заметил - http://www.cotonti.com/datas/users/200_1645.png

Может, там тоже ответ 404 сделать?

Macik
#18 2012-05-12 16:40
#34281 Moool13:

Еще заметил - http://www.cotonti.com/datas/users/200_1645.png

Может, там тоже ответ 404 сделать?

 

Тут надо от разработчиков комментарий получить, на предмет, как и когда используется тот или иной вызов сообщений.

На сколько я понимаю, есть 4 основных сценария использования сообщений об ошибке:

  1. Вывод сообщений внутри страницы (например не все поля формы заполнены правильно) - используется cot_error($message, $src). Позволяет «копить ошибки в стек» и выводит их единым блоком;
  2. Вызов сообщения об ошибке (или запрос на подтверждение), подгружаемые через Ajax - используется «прямой» вызов messahe.php;
  3. Завершение скрипта с выводом ошибки (например «запрашиваемая страница не найдена», «раздел заблокирован»). Используется системными файлами через cot_die_message($code,[$header]). Особенность в том, что выводится страница «заглушка» без стандартного дизайна. Коды ошибки должны корректно передаваться на клиента;
  4. Ошибки доступа к ресурсам сайта, через cot_block($allowed). Используется редирект (через header('Location: ...')) на страницу с ошибкой (message.php), после чего может быть еще один редирект (meta тег "refresh"), например на страницу авторизации.

Еще вопрос к разработчикам:  при попытке обращения к ресурсам недоступным пользователю (например в админку без пароля) мы получаем сообщение 930 и редирект на страницу авторизации (или главную). Со стороны пользователя все ОК, однако, запрашиваемая сраница отдается с кодом «302 Found», а последующая страница с сообщением 930 отдается по коду «200», хотя по логике должен отдаваться код «401 Authorization Required» (или как указано в коде cot_block($allowed) «403 Forbidden»).  Вот иллюстрация.

Непонятки кроются в functions.php,см. функцию cot_redirect($url):
в строке 4598 мы устанавливаем заголовок «HTTP/1.1 403 Forbidden», пришедший к нам из  cot_block($allowed),
однако далее в строке 4619 имеем header('Location: '.$url), который «имеет приоритет» и естественно отдает 302.

Как решение этой проблемы - 930 сообщение должно отдавать в этом случае код 401 (или 403).

 

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
Trustmaster
#19 2012-05-12 19:10

Редиректы и корректные HTTP-коды не совместимы в принципе. Хотим корректных кодов, надо убирать редиректы.

А если message.php будет после редиректа выдавать, скажем, 404 или 403, то браузеры и поисковики расценивают это как редирект на несуществующую страницу, то есть как ошибку логики сайта.

May the Source be with you!
Moool13
#20 2012-05-12 19:11

Да, с messahe.php много неясностей..

Как по мне, лучше разбить на разные ф-ии пункты (1234), приведенные Macik'ом.

Добавлено 24 секунды спустя:

Хотим корректных кодов, надо убирать редиректы.

Я за уборку редиректов. Прпавильный ответ важней, имхо.

Macik
#21 2012-05-12 23:56
#34286 Trustmaster:

Редиректы и корректные HTTP-коды не совместимы в принципе. Хотим корректных кодов, надо убирать редиректы.

А если message.php будет после редиректа выдавать, скажем, 404 или 403, то браузеры и поисковики расценивают это как редирект на несуществующую страницу, то есть как ошибку логики сайта.

А на сколько реально (трудоёмко) избавиться от редиектов (я про те которые ведут на message.php) через header('Location') ?

Может тогда (на примере с отсутствием доступа) сделать вывод страницы «заглушки» (как в cot_die_message) с правильным кодом, а с него (при необходимости) редирект через мета тег на «главную».

Еще вопрос: какими факторами был обусловлен минималистичный дизайн «страниц заглушек»? Т.е. можно ли к ним (в теории) прикрутить стандартный (шаблонный) дизайн?

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
Trustmaster
#22 2012-05-13 06:45

Избавиться от редиректов на message в функциях типа cot_block() можно. Не скажу, что можно избавиться от них совсем.

Заглушки cot_die_message() поддерживают шаблоны: error.tpl и error.код_ошибки.tpl. Но там 1 шаблон на всю страницу. header/footer не поддерживаются, потому что их включение потянет за собой выполнение множества кода и плагинов, что неприемлемо, если произошла серьёзная ошибка.

May the Source be with you!
Macik
#23 2012-05-13 11:46

Понял. Спасибо за разъяснения.

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
Moool13
#24 2012-05-13 12:58

Но может все-таки поменять редирект на код ошибки?

И какой адрес у заглушки?

Macik
#25 2012-05-17 10:47
#34297 Moool13:

И какой адрес у заглушки?

Прямого адреса у заглушки нет. Ее можно вызвать только из кода через cot_die_message();

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
Roffun
#26 2014-03-27 21:13

Я проверял ответ сервера по этому сервису,  404 работает корректно, сервер получает ответ:

HTTP/1.1 404 Not Found

А оформить 404 страницу - не проблема. 

Улетел на другую планету, а там почты нету.. https://www.cotonti.com/forums/45298?m=posts
This post was edited by Roffun (2016-11-11 14:44, 7 years ago)

<<<12