синергия чпу и поиска
пост в продолжение темы об улучшении человекопонятных адресов aka ЧПУ
во вчерашней отповеди Ильи Бирмана недостаточно хорошим адресам я заметил важный момент в мотивации, зачем нужны правильные ЧПУ:
…чтобы я мог написать адрес и попасть на нужную страницу, как я это с лёгкостью делаю на Википедии
гик вроде меня помнит точную структуру адреса на важных ему сайтах, и при необходимости вводит её вручную и без опечаток. Но что если продолжить поворачиваться лицом к человеческим ошибкам? Кто-то может опечататься, или пропустить сегмент, или сплоховать ещё одним из сотен способов. Сейчас почти везде такой пользователь получит сообщение типа «Страница не найдена». Но мы-то можем сделать лучше
вспомните: для википедии можно набрать в адресе «ru.wikipedia.org/django» и оказаться на нужной странице «http://ru.wikipedia.org/wiki/Django». Теперь представьте, что для других сайтов можно набрать, например «ilyabirman.ru/уникод», и оказаться на странице «http://ilyabirman.ru/meanwhile/2009/04/15/2/» с заметкой «Биты, Болк и Уникод», или быть перенаправленным с «blog.arty.name/цифровое видео» на «https://blog.arty.name/2009/ssyilka-o-tsifrovom-video/». Здорово, не правда ли?
что для этого нужно? Всего ничего! Если не удалось отрезолвить адрес, не спешить показывать 404 ошибку. Перед этим нужно взять из такого адреса путь и засунуть его в полнотекстовый поиск по основному контенту сайта: новостям, статьям, людям, фильмам — чему угодно. Если есть результаты, взять первый из них и перейти к нему. Вуаля!
конечно, желательно при этом подсмотреть у википедии и ещё одну правильную мысль: при таком редиректе желательно показать пользователю сообщение типа «вы направлены сюда с поискового запроса такого-то, кликните сюда, чтобы посмотреть другие результаты»
есть и быстрый+грязный вариант решения: редирект на гугловский «мне повезёт» по своему сайту и с этой же строкой поиска ; )
такую мысль можно развить в более сложный, но более универсальный и «правильный» вариант. У нас уже есть стандарт OpenSearch, относительно распространённый в вебе. Когда человек начинает писать в адресной строке, браузер берёт домен этого адреса, вытаскивает по XRDS для него путь opensearch, подставляет в этот путь всё после домена, берёт с полученного адреса варианты подсказок и предлагает их пользователю. С человеческой точки зрения это выглядит так: указал домен, после него написал поисковый запрос, выбрал нужный результат и перешёл к нему — почти ничем не отличается от опыта с уже существующими браузерами типа хрома или фф, только результативнее!
конечно, у предложенного есть серьёзный недостаток: это не будет работать на сайтах ленивых разработчиков, то есть, на большинстве сайтов. Но зато, с другой стороны, в схеме напрочь отсутствует большой брат, за которого поругивают эксплорер с его системой подсказок и, если мне не изменяет память, хром с его гуглопоиском. Всё кошерно распределённое и основанное на существующих стандартах : )
ваши мысли?