рассмотрим такое явление как ЧПУ на примере форумов: классический вариант ури выглядит так: /forum/viewtopic.php?t=6485 - короткий, удобный, но нифига не понятный более продвинутый, с указанием полного пути: /forums/programming/javascript/misc/thread/34442.xhtml - длиннющий, но не содержит информации о содержании топика, зато содержит излишнюю информацию о том, что яваскрипт относится к программированию. при этом перенос топика в другой форум требует изменения ури, хотя содержимое самого топика ни чуть не меняется. в результате мы имеем битые закладки, битые ссылки в индексах поисковиков и тп проблемы, которые приходится решать редиректами со старых урлов. убер ури: /comments/lib/6_dbsimpleVersion1XLakonichnayaRabotaSRazlichnimiSubd.html - ещё более длинный и ещё менее читабельный вариант. чесное слово, чем это недоразумение - лучше четыре циферки. ан-нет, все гонятся за ЧПУ. и у каждого свой монстрик... попробуем абстрагироваться от модного слова ЧПУ и попытаемся понять, чего же мы хотим от ури? прежде всего ури - это не путь к файлу на диске, а уникальный идентификатор ресурса. сам "ресурс" мы можем перемещать как по диску, так и по каталогу сайта, но его идентификатор не должен меняться, иначе какой же это идентификатор? отсюда следует банальный вывод: всяким "programming/javascript/misc" в ури делать просто нечего, потому как они относятся скорее к идентификации местоположения ресурса внутри некоторой иерархии - внешней по отношению к самому ресурсу. но что же такое ресурс? ресурс - это некоторый набор данных представленных в определённом виде. то есть, в ури должно быть однозначно зашифрованы идентификаторы данных и способ их представления (view). то есть мы получаем, что наиболее адэкватной является первая схема формирования ури или фактическое отсутствие какого бы то ни было ЧПУ. но всё портит нечитабельность и незапоминаемость ури. если с первым существующие решения хоть как-то пытаются справиться, то на второе все дружно забивают. а зря! всвязи с вышесказанным напрашивается следующее очеловечивание ури: /topic/javascript_faq/ где первая часть ури (topic) - идентификатор представления, а вторая (javascript_faq) - идентификатор данных естественно, это может быть и что-то более сложное, типа: /topic/xml/all/javascript_faq/ у такой схемы отличная запоминаемость, по скорости она лишь немногим уступает варианту с числовым идентификатором, но вот его формирование несколько проблематично - идентификатор должен быть достаточно информативным, но не слишком длинным. варианты типа "перевести название топика на англиский и записать без пробелов" естественно не подходят. переводить в транслит - ещё хуже. русским - обретём букет других проблем. конкретизируем требования к идентификатору, которому надлежит оказаться в ури: 1. это должна быть латиница 2. английский язык, на крайняк - транслит 3. не более 3 слов и 30 символов (ориентировочно) 4. он должен быть уникальным вообще или хотябы в пределах одного указываемого представления наиболее вменяемым мне видится только вариант с дополнительным полем в которое пользователь может вписать наиболее адэкватный идентификатор. в случае коллизий есть несколько путей их разрешений, которые можно применять в любой комбинации: 1. просто приписывать (если ещё нет), либо увеличивать индекс в конце предложенного идентификатора (topic,topic1,topic2,topic3) 2. предложить пользователю переформулировать 3. предложить пользователю не создавать новый топик, а продолжить обсуждение в существующем
Однако многие так и делают, и не жалуются... (хотя меня вообще ЧПУ не "прёт" если я вижу что нибудь типа "viewtopic.php?t=6604" меня это не чуть не смущает)
dark-demon, гы, мну тя лю! На самом деле, я крайне негативно отношусь к ЧПУ в динамических данных. Имхо, это удел именно статики, например раздела со статьями, где содержимое не меняется месяцами и даже годами. Во вторых, как показывает практика, никто не будет набирать руками ни ЧПУ длинной больше 20 знаков, ни вообще никакой другой УРЛ! В общем, +1 =)
Уверен что никого, но их-то это смущает вот в чём проблема-то. Многие ЧПУ-шники ссылаются на SEO (думая что поисковому боту больше нравятся "красивые" ссылки) но видимо они забывают что поисковой робот тоже робот и ему глубоко плевать на "красоту". (ему важно чтоб ссылка на страницу была постоянная без всяких SID а страница имела заголовок Last-modified причём желательно соответствующий истине)
Для статики ЧПУ подходит хорошо. Пример Википедия. Нет необходимости пользоваться поиском, достаточно ввести в URI термин и перейти на нужную станицу.
Я вообще почти никогда не набираю адреса, у меня всё либо в закладках, либо я нахожу через гугл/яндекс (а то что нравится кидаю в закладки) по этому мне ровным счётом всё равно что там в адресе написано...
Петр на php.ru немного не то. Сравни: http://php.ru/string http://php.ru/str http://php.net/string http://php.net/str В php.net это полноценный поиск. Хотя как навигация по мануалу php.ru хороший пример.
Дык, ребята, ЧПУ могут и не быть такими монструозными. У нас вот в бумтайме ЧПУ содержит от одного до (в основном) 3-х слов, типа /friends.html /friend/gallery.html /forums.html /forums_topic/ID.html и.т.д. У них не только чисто визуальное назначение, но и практическое - первое слово указывает какой модуль необходимо загрузить, остальные параметры разбирает уже сам модуль. Как правило для обычных операций вывода хватает 2, максимум 3 уровня. Урлов более чем с 4-мя параметрами (как правило это попапы с редактированием/добавлением/удалением чего-либо и.т.д.) практически нету, очень редко где и там уже пользователь обычно их даже не видит (ибо попапы) или ему дофени, потому-что урл бесполезно запоминать. Можете тут полазить по форуму http://groups.boomtime.lv/ , регистрация для просмотра не требуется. ИМХО вполне понятно и просто. /forums_topic.php?id=ID или /forums_topics/ID.html - ИМХО, 2-й лучше всё-же
Psih в твоём примере УРЛ выглядит красиво и понятно. А вот URL на форуме dklab выглядит уже монструозно, при всём моём уважении к авторам ресурса. Сам у себя на сайте отказался от длиных URL, вида и пришёл, как сам считаю, к более умному решению ^_^
Дык такие простые и я делаю (хотя скорее чисто от нефиг делать) вот у меня на сайте (в гостевушке) /start10.html /start20.html Но ИМХО никому это не нужно и никто на это не обратит внимание... (разве что какой нибудь педант)
ну вот данный топик имеет ури: /forum/viewtopic.php?t=6604&start=0&postdays=0&postorder=asc&highlight= если пофиксить баги пхпББ, то он сократится до: /forum/viewtopic.php?t=6604 фактически он является "статьёй с обсуждением", хотя и располагается в "форуме". сама статья наврятли будет меняться, поэтому её вполне можно назвать статикой. почему бы не предоставить пользователю возможность сформировать короткий и лаконичный ури для неё, чтобы при необходимости можно было бы быстро по памяти набрать её адресс (а браузер с закладками не всягда находится под рукой, да даже если и под рукой - ковыряться в куче закладок не слишком-то эффективно..), чтобы видя на форуме ссылку куда-то было бы сразу понятно "ага, это тот топик, где мы обсуждали чпу"? конечно, если пользователь пришёл спросить как сложить два числа и ему не то, что идентификатор, а даже заголовок придумывать лень, то для него сформируется ури вида /topic/6604/, но не стоит лишать адэкватных пользователей (да и самих же себя) возможности формировать ури вида /topic/chpu_hell/
ну, если это будет на порнофоруме, то я тоже не удивлюсь в общем же случае, freexxxvideo несёт информации не больше, чем число 6604, а запоминаемость лучше (да что там говорить, первое я набрал сейчас по памяти, а второе - пришлось кнопку "назад" нажать). впрочем, за неадэкватный ури можно спрашивать по всей строгости неадэкватного заголовка топика...
При посещаемости форума больше 2х человек в день, скоро такие названия закончатся. Представь - на этом форуме хочешь создать тему, а тебе пишут - "тема с таким названием уже существует"...
значит я просмотрю эти темы, и если там обсуждается что-то не то, то уточню идентификатор либо положусь на автоматику, которая сформирует уникальный индентификатор просто добавлением индекса в конце.