Грамотная 404 страница

#1 15 мая 2012 в 19:39
Здравствуйте, Друзья!

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

Как сейчас реализовывается редирект… Скажем, в новой системе в cms.php отличный от старой "символьный лист" для назначения ЧПУ. У нас на проекте такой:

  1. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  2. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  3. static public function strToURL($str){
  4.  
  5. $str = trim($str);
  6. $str = mb_strtolower($str, 'cp1251');
  7. $str = str_replace(' ', '-', $str);
  8. $string = preg_replace ('/[^a-zA-Zа-яёА-ЯЁ0-9\-]/i', '-', $str);
  9.  
  10. $string = rtrim($string, '-');
  11.  
  12. while(strstr($string, '--')){ $string = str_replace('--', '-', $string); }
  13.  
  14. $ru_en = array(
  15. 'а'=>'a','б'=>'b','в'=>'v','г'=>'g','д'=>'d',
  16. 'е'=>'e','ё'=>'yo','ж'=>'zh','з'=>'z',
  17. 'и'=>'i','й'=>'i','к'=>'k','л'=>'l','м'=>'m',
  18. 'н'=>'n','о'=>'o','п'=>'p','р'=>'r','с'=>'s',
  19. 'т'=>'t','у'=>'u','ф'=>'f','х'=>'h','ц'=>'c',
  20. 'ч'=>'ch','ш'=>'sh','щ'=>'sh','ъ'=>'','ы'=>'y',
  21. 'ь'=>'','э'=>'ye','ю'=>'yu','я'=>'ja'
  22. );
  23.  
  24. foreach($ru_en as $ru=>$en){
  25. //$string = preg_replace('/(['.$ru.']+)/i', $en, $string);
  26. $string = preg_replace('/(['.$ru.']+?)/i', $en, $string);
  27. }
  28.  
  29. if (!$string){ $string = 'untitled'; }
  30.  
  31. return $string;
  32.  
  33. }
И то, букву й с удовольствием была бы заменена на y например в слове Вий — vii — а нужно viy

Но, сейчас не только об этом.

Переходя на новую (любую другую) сборку, человек столкнётся с тем, что его url (некоторые) начнут отдавать 404 ошибку. Это НЕИЗБЕЖНО!

По-этому, дабы свести к минимуму потери предлагаю сделать УМНЫЙ 404.

Как он должен работать?

Например, есть страница: site.ru/content/dedushkoy_morozom.html при переезде на новую версию cms и редактировании этой статьи, человек получит, при обращении к этой статье ПОСЛЕ ЕЕ редактирования в админке — 404 ошибку. Потому что новый урл будет site.ru/content/dedushkoi_morozom.html

Что если внедрить функцию, которая бы печатала в

  1. <?php $messages = cmsCore::getSessionMessages(); ?>
  2. <?php if ($messages) { ?>
  3. <div class="sess_messages">
  4. <?php foreach($messages as $message){ ?>
  5. <h1 align="center"><?php echo $message; ?></h1>
  6. <?php } ?>
  7. <hr>
  8. </div>
  9. <?php } ?>
в этой части страницы текст — ОШИБКА 404: страница не найдена — и переправляла человека на категорию выше скажем в site.ru/content ?

В результате человек получал бы сообщение и возможность видеть сайт + список статей по теме.

Если например, статья находится в site.ru/content/subtext/text.html — а subtext тоже не доступен (404) — то переадресовывать нужно на уровень выше.

Если уровень выше не доступен — переадресовывать на главную страницу.

Так мы сохраним на много больше посетителей


Послесловие:

или, например, можно рассмотреть такой вариант — человеку отдаётся страница 404 с "таймером" — что через 5 секунд он будет переадресован в категорию в которой была эта статья (что-то в этом духе)


Кто-то может реализовать это принайценнейшее дополнение?
#2 16 мая 2012 в 00:46
Минона, а переезд все таки возможен? Потому что я где на форуме видел, что если не ошибаюсь Fuze говорил что это будут практически разные движки и переезд навряд ли будет возможным
#3 16 мая 2012 в 09:38
Минона, может стоит просто дождаться выхода релиза и не путать лишний раз новичков и просто участников ресурса? Зачем устраивать лишний кипишь.

iLoveNY, переход будет на сколько внимательно я читал форум. Это неизбежно, вопрос только во времени администрации.
#4 16 мая 2012 в 09:48
balooo, все выше сказанное — только для ресурсов, которые живут еще с версий instantcms 1.5…
#5 16 мая 2012 в 09:49
В любом случае, такая 404 страница — была бы на много лучше! И речь тут вовсе не в "переезде"
#6 16 мая 2012 в 12:59
я бы еще сделал 404 в дизайне самого сайта с основным меню как минимум (а то и все менюшки если их нессколько), так собственно и делаю для себя, а то стандартная 404 не айс…
#7 16 мая 2012 в 13:36
Предложенное мной как раз решит эту проблему
#8 16 мая 2012 в 13:51
Минона, вообще не самая лучшая мысль менять URLы старых проиндексированных статей. 404я страница тут не спасет — у вас к тому же позиции рухнут в поисковиках, если конечно не настраивать грамотно 301е редиректы.

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

Если есть старая страница, то ее URL не должен меняться без очень веской причины — смотреть надо в эту сторону. Лучше сделать мини хак(если такой возможности не будет в релизе по умолчанию), который бы исключил изменение адреса при редактировании — вот это было бы намного логичнее и результативнее, чем бороться с негативными последствиями редактирования.

Скажем, в новой системе в cms.php отличный от старой "символьный лист" для назначения ЧПУ. У нас на проекте такой:

Ну и если у вас "символьный лист" отличается от последней версии Инстанта, то не разумнее ли вам оставить свой старый, на котором многое завязано? Хотя это не отменяет необходимости запретить автозамену URLа при изменении статьи.
#9 16 мая 2012 в 13:54
Igor, соглашусь про интегрированую 404 страницу, сам сразу переделал под дизайн сайта 404.
#10 16 мая 2012 в 15:13
SJen, А что если не запрещать изменение URL а просто добавить "список URL" статьи (не знаю как правильно выразить мысль) в общем сделать так: изменился адрес статьи — создаётся c помощью php (например) автоматический редирект на новый адрес.

Как только к старому адресу не будет в течение месяца (например) обращений, он удаляется автоматически.

Не знаю на сколько сложна эта задача, но, реализация позволила бы здорово экономить на обновлениях...

Взять хотя-бы видео или статьи — НА СКОЛЬКО ЧАСТО они теряются! А Статьи? Создается один список категорий, а потом оказывается то-то и то-то лишнее.

А эта опция (или плагин?) был бы весьма кстати!

Каким Вы его себе видите?
#11 16 мая 2012 в 15:16
Минона, все таки проще сделать запрет на изменение УРЛ. В вашем варианте есть хорошая задумка, вы уже не первый раз эту идею оглашаете, если не ошибаюсь)
#12 16 мая 2012 в 15:50
Да, хорошо бы сделать компонент, чтобы он отслеживал, в добавок и источник перехода на "старый" урл. — это было бы здорово


Минона, все таки проще сделать запрет на изменение УРЛ. В вашем варианте есть хорошая задумка, вы уже не первый раз эту идею оглашаете, если не ошибаюсь)

balooo


Запрет на изменение URL Не поможет, например, при изменении категории у статьи, нужно чтобы и url менялся.

Если у меня была на сайте вложенность статьи 6 категорий, а теперь 1 категория, зачем хранить старый?

============
Кстати, эта функция, могла бы включиться в SEO компонент какой-нибудь. Ведь для WordPress Есть свой специальный SEO компонент. Еще и не один.
#13 16 мая 2012 в 16:23

Взять хотя-бы видео или статьи — НА СКОЛЬКО ЧАСТО они теряются! А Статьи? Создается один список категорий, а потом оказывается то-то и то-то лишнее.


Я сам давно отказался от названия категории в URL — они там ни к чему. И InstantVideo привел к такому варианту, чтобы все ролики открывались по адресу site.ru/video/ролик.html. Ну ни к чему там еще и категория.

Взять хотя-бы видео или статьи — НА СКОЛЬКО ЧАСТО они теряются! А Статьи? Создается один список категорий, а потом оказывается то-то и то-то лишнее. А эта опция (или плагин?) был бы весьма кстати! Каким Вы его себе видите?


У меня такой проблемы нет, поэтому я пока его вообще "не вижу" smileПри изменении названия статьи мы никогда не меняем первоначальный адрес — ни в видео, ни в статьях — потому что каждая статья прогоняется по RSS каталогам, постится в твиттер, фейсбук — куча ссылок которые потеряют смысл если поменять адрес статьи. Автоматически никогда, если только специально что бывает крайне редко.

Про SEO компонент сам пока только думаю, собираю пожелания в кучу. Еще не начинал работу над ним…
#14 16 мая 2012 в 22:47
может взять аналоги от WP и их проработать?
#15 16 мая 2012 в 22:54
Итак, что нужно иметь в SEO-компоненте?

= cmsinstant.ru/catalog/item24.html — вот такая карта сайта
= Должен включать в себя "колдунщика"
= включать управление 404 ошибками и отслеживание источников ссылок на 404 ошибку
=
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.