синергия чпу и поиска
пост в продолжение темы об улучшении человекопонятных адресов aka ЧПУ
во вчерашней отповеди Ильи Бирмана недостаточно хорошим адресам я заметил важный момент в мотивации, зачем нужны правильные ЧПУ:
…чтобы я мог написать адрес и попасть на нужную страницу, как я это с лёгкостью делаю на Википедии
гик вроде меня помнит точную структуру адреса на важных ему сайтах, и при необходимости вводит её вручную и без опечаток. Но что если продолжить поворачиваться лицом к человеческим ошибкам? Кто-то может опечататься, или пропустить сегмент, или сплоховать ещё одним из сотен способов. Сейчас почти везде такой пользователь получит сообщение типа «Страница не найдена». Но мы-то можем сделать лучше
вспомните: для википедии можно набрать в адресе «ru.wikipedia.org/django» и оказаться на нужной странице «http://ru.wikipedia.org/wiki/Django». Теперь представьте, что для других сайтов можно набрать, например «ilyabirman.ru/уникод», и оказаться на странице «http://ilyabirman.ru/meanwhile/2009/04/15/2/» с заметкой «Биты, Болк и Уникод», или быть перенаправленным с «blog.arty.name/цифровое видео» на «http://blog.arty.name/2009/ssyilka-o-tsifrovom-video/». Здорово, не правда ли?
что для этого нужно? Всего ничего! Если не удалось отрезолвить адрес, не спешить показывать 404 ошибку. Перед этим нужно взять из такого адреса путь и засунуть его в полнотекстовый поиск по основному контенту сайта: новостям, статьям, людям, фильмам — чему угодно. Если есть результаты, взять первый из них и перейти к нему. Вуаля!
конечно, желательно при этом подсмотреть у википедии и ещё одну правильную мысль: при таком редиректе желательно показать пользователю сообщение типа «вы направлены сюда с поискового запроса такого-то, кликните сюда, чтобы посмотреть другие результаты»
есть и быстрый+грязный вариант решения: редирект на гугловский «мне повезёт» по своему сайту и с этой же строкой поиска ; )
такую мысль можно развить в более сложный, но более универсальный и «правильный» вариант. У нас уже есть стандарт OpenSearch, относительно распространённый в вебе. Когда человек начинает писать в адресной строке, браузер берёт домен этого адреса, вытаскивает по XRDS для него путь opensearch, подставляет в этот путь всё после домена, берёт с полученного адреса варианты подсказок и предлагает их пользователю. С человеческой точки зрения это выглядит так: указал домен, после него написал поисковый запрос, выбрал нужный результат и перешёл к нему — почти ничем не отличается от опыта с уже существующими браузерами типа хрома или фф, только результативнее!
конечно, у предложенного есть серьёзный недостаток: это не будет работать на сайтах ленивых разработчиков, то есть, на большинстве сайтов. Но зато, с другой стороны, в схеме напрочь отсутствует большой брат, за которого поругивают эксплорер с его системой подсказок и, если мне не изменяет память, хром с его гуглопоиском. Всё кошерно распределённое и основанное на существующих стандартах : )
ваши мысли?
Ровно в предложенной форме это работает на сайте PHP: http://php.net/exceptions.
По поводу «Мне повезёт» есть http://googlewebmastercentral.blogspot.com/2008/08/make-your-404-pages-more-useful.html.
Бирман, как обычно, рассматривает проблему только с одной стороны…
david_m,Принудительно перенаправлять на страницу - не всегда выход (да и справиться с тем, что чтобы ты не набрал - не выдает 404, это тоже решение не очень). У Wordpress'а есть механизм "похожих слагов" - когда кусок УРЛа воспринимается как похожий на слаг какого-то поста и редиректится туда. Что-то аналогичное Макс попытался сделать в своей MaxSite CMS.
Кроме того, вариантов в полнотекстовом поиске может быть несколько - поэтому все-таки лучше превращать 404 страницу в инструмент навигации, с которой можно уйти куда угодно (давать навигацию по категориям, тегу, поиск). Или, как как-то предлагали - натравить Гугл на УРЛ, как здесь http://absolvo.ru/2008-10-17/delaem-stranicu-404j-oshibki-razumnoj-s-pomoshhyu-google/ - собственно, оригинал давали в ссылке выше.
В комментариях у Бирмана еще вспомнили Смирнова, с его заявлениями о ЧПУ - если не брать во внимание то, что поисковики все-таки используют УРЛ для определения релевантности, то, действительно, во многих случаях не нужны эти длинные транслитовые-юникодовые записи (и это надо каждый раз думать, насколько они нужны/не нужны).
Там же, где они действительно нужны - как в Вики, нужны вот такие механизмы "разрешения непопределенности". Например, может, кто помнит, как Носик гордился системой на BFM, которая позволяет через понятную систему УРЛов агрегатить информацию из разных разделов, как бы пересоздавая ее заново. Или более слабую, на мой взгляд, систему агргеации на news2.ru.
И не стоит забывать о непрерывности и иерархичности УРЛов - иначе они просто бессмысленная мешанина буков.
(и я уже почти привык пользовать для "варианта OpenSearch" Хром - набираешь "site:site.ru поисковый запрос" прямо в адреске, или подставляешь перед урлом, если на 404 попал - и все. Но, конечно, невнимание к такой стороне веб-приложений раздражает, да)
marapper,в хроме OpenSearch уже работает. только надо что бы сайт был уже посещённ (попробуй last.fm, twitter). а вот что бы он догадывался об OpenSearch на незнакомых сайтах — пока нет
arestov,ух ты, я не знал про хром, молодцы! И делает он именно то, о чём я говорю: добавляет подсказки с сайта прямо при вводе адреса, на том же миртесен можно посмотреть : )
конечно, XRDS тут может быть лишним, вполне достаточно помнить про opensearch уже посещённых сайтов
про сайт php я забыл : ( Да, это очень хороший пример того, как можно намного упростить пользование сайтом, и того, что страница 404 человеку не нужна вообще. Ну кроме совсем уж крайних случаев. Не заставляйте меня думать© что делать дальше, выберите наиболее вероятный вариант самостоятельно и покажите его мне, а уж если он будет плох, тогда я пойду разбираться самостоятельно, так и быть
arty,С 404й страницы лучше не редиректить насильно, а предложить на выбор не только "куда отсюда уйти", но и "как здесь остаться". Например (для wiki-сайтов так делают) создать страницу под этим урлом или просто оставить комментарий вебмастеру "здесь должно что-то быть" или "у вас здесь что-то было, но потерялось". В общем, 404я страница - это не только ценная страница навигации, но и ценная страница для получения обратной связи.
Кстати, 5xx-страницы - тоже :)
ac,если я попрошу в гостинице «аднаместный номир», для служащего гостиницы будет лучше сразу выдать мне одноместный номер, чем переспрашивать, не имею ли я в виду «одноместный номер»
вики — особый случай, и вообще-то неизвестно, самое ли лучшее интерфейсное решение в них выбрано
обратная связь легко делается автоматически, без участия несчастного пользователя
arty,