шаблон URL для сайта Как создать свой сайт > Вебмастеру > Создание своего сайта > Выбираем шаблон URL для сайта

Выбираем шаблон URL для сайта

Я дружил с человеком, засолившим когда-то в бочке жену и детей.
«Зона. Записки надзирателя», Сергей Довлатов.
24 сентября 2007

    Многие сайты используют для своих материалов неоптимальный шаблон URL. Обычно так происходит потому, что этому вопросу не уделяют достаточно внимания при запуске. Потом, когда сайт раскручивается и неоптимальность выбора становится очевидной, поменять шаблон уже не так просто. Так что лучше делать правильный выбор изначально.


    Давайте посмотрим, какие существуют типы шаблонов URL на сайтах (регулярно обновляемых сайтах с основной структурой «запись-за-записью»).

  1. С постоянным префиксом (разделом) или без него: http://www.seoded.ru/posts/postname/ vs. http://www.seoded.ru/postname/
  2. С окончанием «/» или без него: http://www.seoded.ru/2007/postname/ vs. http://www.seoded.ru/2007/postname
  3. С использованием категорий или даты, как основного префикса: http://www.seoded.ru/2007/09/postname/ vs. http://www.seoded.ru/web-architect/postname/
  4. С указанием имени файла или с указанием только пути: http://www.seoded.ru/2007/09/postname.html vs. http://www.seoded.ru/2007/09/postname/
  5. С названием материала в качестве определяющего элемента или с номером материала в качестве него: http://www.seoded.ru/postname/ vs. http://www.seoded.ru/1/
  6. С названием записи на транслите или на английском: http://www.seoded.ru/postname/ vs. http://www.seoded.ru/nazvanie_posta/

    Предупреждение: шаблоны, не использующие «чистые» постоянные ссылки, я даже не включаю в обзор. Они по умолчанию хуже. К счастью, таких с каждым годом становится всё меньше.

    Потом: сравнение проводится исключительно для кириллических сайтов, поэтому попадание ключевого слова в URL здесь значительно менее вероятно.

    Сформулируем требования к идеальному адресу.

  1. В нём должно быть как можно меньше символов.
  2. Он должен описывать материал, на который ссылается.
  3. У пользователя не должно возникнуть проблем с его пониманием.
  4. Удалив символы до ближайшей косой черты «/» мы должны получить доступный адрес (выше по иерархии) и содержащий наш материал вместе с другими аналогичными.
  5. Шаблон URL не должен ограничивать нас при дальнейшем развитии сайта.

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

С постоянным префиксом или без него?

    Постоянный префикс нужно использовать тогда, когда возможно появление других разделов сайта на одном уровне иерархии с корневым. Т. е. для http://blog.seoded.ru/ в этом нужды нет, так как это отдельный домен третьего уровня и ничего кроме блога на нём быть не может. А вот на сайте типа http://seoded.ru/ префикс не помешает. Потому что его отсутствие ограничивает автора. Вдруг он решит расширить сайт? Содержи записи префикс «blog/», архитектура бы расширялась красиво. А так, при добавлении других разделов, придётся либо отказываться от элегантности (одинаковый уровень будет у записей блога и других разделов), либо настраивать перенаправление, что тоже не радостная процедура.

С окончанием «/» или без него?

    По правде, нужно бы делать адреса без слеша в конце. Потому что слеш указывает на директорию, а его отсутствие — на индивидуальную запись. «Но если это индивидуальная запись, то почему она без расширения, т. е. не указывает на конкретный файл? Что же это тогда такое?» — спросит придирчивый пользователь. И будет прав. Ведь в большинстве движков файлы не создаются вообще: красивые адреса — это не больше, чем стандартизированный вывод из базы данных. Поэтому, раз мы всё равно «обманываем» пользователей, не будем их к тому же и смущать. Лучше использовать слеш: пусть все думают, что у нас здесь развернутая система директорий.

С использованием категорий или даты, как основного префикса?

    Самый сложный вопрос. Здесь всё решается индивидуальностью вашего сайта. Если вы уверены в полноте и незыблемости вашей системы категорий, в том, что каждую вашу запись с уверенностью можно занести в одну из них… можете их использовать. Шаблоны URL сайта в виде категорий дадут вашим пользователям возможность точнее определять характер материала по его адресу.

    Но они же вас и свяжут. Поменять категорию записи станет намного сложнее, потому что её адрес жёстко привязывает вас к первоначальному выбору. Часто будут возникать ситуации, когда выбор категории будет очень сложным. Тогда неизбежно потеряется качество категоризации материала и пользователи, удалившие символы до слеша получат не совсем то, чего они ждали.

    Кстати, под «категориями» я понимаю любую возможную разбивку. Это могут быть не только рубрики сайта, но и автора материалов. Или компании, о которых в материалах говорится. Здесь всё зависит от того, на чём ваш сайт сконцентрирован.

    Ещё одно, что нужно сказать о категориях: они повышают вероятность попадания в ваш адрес важного ключевого слова. Для кириллических блогов это не так важно, но всё равно существует множество непереводимых понятий. Например, «SEO», «SMO», «link». Если они попадут к вам в адрес (в качестве названий категорий), всем — и пользователям, и, возможно, поисковым системам — станет только лучше.

    Да и вообще, категории, похоже, отживают своё в блоговых движках. Вот следующий Wordpress уже будет поддерживать теги. Поэтому не нужно на них концентрироваться, если вы не уверены. Я, например, не уверен. И теперь мне придётся реструктуризировать некоторые свои сайты, потому что я как раз так и ошибся.

    Надо было использовать разбивку по времени. Например, вот так: http://www.seoded.ru/2007/09/postname/. Здесь важно правильно выбрать необходимую разрядность. Имеет смысл указывать дату до той точки, до которой на последнем уровне будет содержаться набор из 10-100 ваших статей. Для блога это, скорее всего, месяц. Так как в день публикуется 0-4 записи, а в год уже больше 100. Многие сайты, почему-то, пользуются полной разрядностью, с указанием дня: sitename/year/month/day/postname/. Когда, по количеству статей, им бы указывать только год… Вот, что значит сделать такой вариант доступным по умолчанию (в Wordpress)!

    Также, используя как префикс время, мы повышаем уникальность похожих заголовков и показываем их разрыв во времени: sitename/google_maps/ + sitename/google_maps_reloaded/ vs. sitename/2006/05/google_maps/ + sitename/2007/12/google_maps_reloaded/.

    Можно вообще отказаться от использования префикса. И категорий, и времени. Просто использовать шаблон sitename/postname/. Это позволит уменьшить размер строки и не засорять её неважной информацией. Но в таком случае теряется одно смысловое звено. В случае с категориями — лишнее указание на характер материала. В случае со временем — указание на регулярность обновления блога и его прошлое. Здесь всё очень тонко, авторам блогов нужно много думать.

С указанием имени файла или с указанием только пути?

    Скажу так. Если ваша структура — не истинные директории и вы можете указать имя конкретного файла с расширением для материала — указывайте. Но только тогда, когда расширение легко узнаваемо. Типа «.html». Необычные расширения пользователя нервируют.

С названием материала в качестве определяющего элемента или с номером материала в качестве него?

    Если не так важно название, а номер и префикс дают нам достаточно информации — можно использовать номер. Это избавит нас от необходимости раздумывать над написанием названия на английском и упростит вид URL. Например, так делает Лебедев в своём Ководстве. И правильно: потому что, учитывая скорость его обновления и сложившуюся ауру проекта, здесь уместнее номер.

С названием записи на транслите или на английском?

    Транслит хуже выглядит и часто занимает больше символов. Если ваш домен содержится в зоне ru, его лучше не использовать никогда. Возможно, кроме случая, когда ваша аудитория — совершенно не знающие английского люди. Также, возможно, транслит можно использовать для внесения в URL информации о языке материала (для сайтов, расположенных на интернациональном домене). Для националистов. И если вашего собственного знания английского недостаточно для качественного перевода названий.

    На этом — всё.

    Как обычно, главная идея статьи — дать понять, как тема важна и обширна, а не высказать супер-авторитетную точку зрения. Буду благодарен за дополнения и исправления в комментариях!

Автор: Роман Настенко.

Комментарии:

GogA 24 Сен 2007
> С окончанием «/» или без него?
Хоть как, главное чтобы путь был один.
В друпале например может работать и с «/» или без него, особенность движка. Модуль фиксящий проблему есть :)

GogA 24 Сен 2007
Так, как вижу тобой был выбран вариант /catagory/name/
Ну да, статьёй озадачил выбор категорий при создании, сменить её не так сложно, как поменять остальные линки :)
Зато в pathauto (модуль для Drupal) можно настроить что при смени категории новый путь создавался дополнительно к старому, тоесть по старому статья тоже будет находиться, а не возвращаться 404 (кстати, может быть редирект, не тестил).
Для одного своего проекта, на данный момент структура url была такая
pub/2007/09/24/name
news/2007/09/24/name
и тд. тоесть по типу материала :)
Хорошо что база ещё не заполнена!
Буду переделывать на
pub/2007/09/name
news/2007/09/name
Так локаничней, да и если пользователь захочет ручками поменять месяц, то с намного большей вероятностью попадёт на месяц где есть записи… С днями бы фишка не прокатила, статьи на сайт добавляются не ежедневно.
Так что статья уже полезная! :)
Спасибо.
В принципе и ссылки так будут смотреться чуточку лучше! :)

Роман Настенко 24 Сен 2007
GogA, а интересно, есть ли такой модуль для Wordpress??? Очень бы пригодился!

GogA 24 Сен 2007
Роман Настенко, не вкурсе. И скорей всего в ближайшее время не узнаю :)
Свой блог планирую на друпале запустить.
1. pub/2007/09/translit
2. pub/2007/09/translit/
3. pub/2007/09/translit.html
4. pub/2007/09/5423
5. pub/2007/09/3455/
6. pub/2007/09/1542.html
7. blog/nameblog/1542.html
8. pub/nameblog/translit
Для разных целей лучше использовать разные url.
Например в каталоге публикаций нет значения, какого числа была выложена статья (точней не так критично как с новостями), а для новостей не обязательно имя в транслите добавлять к url.
Опять же продолжная тему про Друпал.
В стандартном функционале модуля pathauto можно для разных типов материалов сделать автоматическое преобразование по шаблону.

Роман Настенко 24 Сен 2007
Кстати, проголосовать за тему можно здесь:
***

odp 24 Сен 2007
С точки зрения seo традиционно наилучшим вариантом считается складывать все посты к корень, и пользоваться ХТМЛьным “расширением”.
Мотивируют тем, что /post = /post/ - дублирование контента - путь в сопли. Вариант /2007/09/24/post - слишиком глубокое расположение документа - хуже ранжируется (логика такова, что важные документы находятся ближе к корню). Транслит или англояз - пох.

Роман Настенко 24 Сен 2007
odp, почему это дублирование контента?

Tugarinov Sergey 24 Сен 2007
Ну что такое, уже неделю мусолю эту тему, начал писать текст, и тут на тебе, выходит пост практически посторяющий мои мысли. Обидно :(

GogA 24 Сен 2007
Tugarinov Sergey, кто первый встал, того и сапоги :)
Я бы и вторую статью прочитал, не бросайте.

Роман Настенко 24 Сен 2007
Tugarinov Sergey, сочувствую, знаю каково это :(
Но в нашем блогерском деле скорость написания материала — это все :)

Tugarinov Sergey 24 Сен 2007
Я бы и вторую статью прочитал, не бросайте.
Постараюсь :)
Но в нашем блогерском деле скорость написания материала — это все
Согласен, хотя у меня еще нет блога :) Так, задумал серию статей.

Skop 24 Сен 2007
Главное чтобы народ всё-таки задумывался о таких элементарных вещах, а не лепил всё по шаблону. А уж структура конечно вещь индивидуальная, и от разных вещей зависит

rybnadzorro 24 Сен 2007
По поводу третьего пункта - очень позитивно, когда префикс указывает на раздел/тематику статьи. Я столкнулся с этим с другой стороны - забивая разные шаблоны адресов в гугл кооп.
Никто не заставляет делать эту привязку жёсткой - при распарсивании урла скриптом префикс можно вообще не учитывать.

mari4ek 25 Сен 2007
у меня /category_name/post_name
причем название на транслите. вот. думаю достаточно оптимально., хотя глубоко, что не есть очень хорошо для сео.
не вижу причин выставлять дату. врядли кто-то будет калупать URI имхо. легче воспользоваться навигацией по сайту. вот.
про “/” пользователь don’t care про то есть он в конце или нет…
2 Роман Настенко красивые адреса — это не больше, чем стандартизированный вывод из базы данных.
советую изучить вопрос и поправить запись в этом месте…

Роман Настенко 25 Сен 2007
mari4ek, вообще-то, чтобы в этом убедиться, достаточно посмотреть через FTP, есть там директории или нет.
Интересно, а что же это тогда, если не вывод? Вывод + rewrite.

mari4ek 25 Сен 2007
Роман Настенко
ну мне можно не расказывать, что это такое)
просто нужно было упомянуть mod_rewrite и .htaccess - без них ничего не получится, как бы ты линки не формировал и выводил…
поэтому как раз красивые адреса - это *больше* чем генерация красивых линков (ну или стандартизированный вывод из базы данных, как ты написал)

Роман Настенко 25 Сен 2007
mari4ek, соглашусь, но добавлю, что писал для людей, которым либо уже известны, либо не интересны такие технические подробности :)
Ведь факта не изменишь, этих файлов нигде нет, они технически сложная иллюзия :)

Алексей Д. 25 Сен 2007
Уже скоро займусь разработкой собственного stand-alone блога, т.к. действительно есть о чем писать, да и опыт в веб достаточно громоздкий, чтобы его использовать и им делиться.
Статья хорошая, доходчивая, логичная. В общем, ничего особо нового не сказано, зато хорошо систематизировано. Я бы посоветовал добавить внутренние ссылки в вопросах с переходами на ответы в этой статье. А то поначалу я не понял, будут ли ниже в статье ответы или нет.
Так держать! Читаю вас и радуюсь. :)

mari4ek 25 Сен 2007
файлов нету, но это не повод вводить в заблуждение даже тех людей, которым это не интересно… имхо.
я так понял ты тоже /category_name/post_name используешь?

Роман Настенко 25 Сен 2007
Алексей Д.
Спасибо :)

Andy 30 Сен 2007
Спасибо! Хорошая статья.

finl 22 Ноя 2007
Спасибо, что разъяснили, долго искал!

cross 09 Дек 2007
Не будет ли самым удобным и хорошо ранжируемым просто транслит тайтла поста:
http://www.seoded.ru/o_shablonal_url/ ?

Роман Настенко 09 Дек 2007
cross, идеально было бы http://www.seoded.ru/about-url-templates/ :)

Вадим 09 Дек 2007
Вы можете заценить, на мой взгляд, лучшую архитектуру - ***
блог/название_категории/id-имя_поста.html
id служит для того, чтобы не получилось двух повторяющихся записей с одним титлом.

Роман Настенко 09 Дек 2007
Вадим, честно, это совсем не лучшая архитектура :)
Проблема повторяющихся записей — это ваша проблема, а не ваших посетителей. Не нужно перекладывать ее частично на них. Им id совершенно не нужен. Это раз. Два — транслит это всегда плохо. Не думаю, что в нем есть нужда, если ваша зона — ru. Что материал на русском — понятно по ней одной.
Потом, в названиях категорий лучше обходиться без разделителя “-”.
И, в конце-концов, ваши материалы очень сильно теряют актуальность со временем.
Думаю идеально для вас было бы не
http://www.seoded.ru/biathlon-cup/30-velikolepnaya-pobeda-norvezhcev.html
а что-то типа
http://www.seoded.ru/2007/12/norwegians-great-victory/
(у вас же нет .html файлов. Если уж дурить пользователей, то можно и так :)
Это развяжет вам руки с системой категорий и тегов — теперь, при желании, вы вообще можете отказаться от первых :)

Free Soft 15 Дек 2007
Эх, и почему я эту заметку только сейчас нашел. Вот бы ее около года назад прочесть, в момент регистрации основных доменов и организации блога. Теперь конечно переделывать уже будет тяжело :(

Роман Настенко 15 Дек 2007
Free Soft, на самом деле не так сложно. Wordpress, например, вручную это делает. Т.е. без вреда для поисковиков. Да и самому можно файл .htaccsess (могу в букве ошибиться) написать :)

snow_wons 23 Дек 2007
postname/ vs. postname - Могут быть проблемы с дублирование контента. К томуже, по логике, / указывает на дирректорию, а не на отдельную запись. А вариант без слеша - мне лично совсем не нравиться: непонятно что за файл.
Как мне кажется правильнее было бы указывать postname.html или postname.htm. Так и поисковикам проще, и людям.
Указывание id записи в url - это, можно сказать, необходимость. Потому что однажды будут 2 поста с одним именем.
Оптимальным вариантом может быть:
/category/id-name.html /category/id.html - 302 редирект на основную запись
/id.html - 302 редирект на основную запись

Sergey 30 Дек 2007
Согласен с предыдущим оратором

{*!ce*} 15 Фев 2008
>вот что значит сделать такой вариант доступным по умолчанию (в Wordpress) !
Просто ножем по сердцу… Пробел перед восклицательным знаком это фу!

Роман Настенко 15 Фев 2008
Это просто глюк.

Seoner 06 Апр 2008
И все таки я выбрал для себя вид /категория/название статьи.html
но проблема от которой не смог избавится что когда заходишь в категорию через меню то путь выглядит так /category/blogging
никак не могу избавится от этой категории - пробовал через плагин специальный, но он не помог


⇓ 

Поделись ссылкой на Seoded.ru с друзьями, знакомыми и собеседниками в соцсетях и на форумах! А сам сайт добавь в закладки! Так победим.

Поделиться ссылкой на эту страницу в:

Полезные ссылки:

Зарабатывать на фотостоках не в пример проще С заработком на Форексе нужно быть осторожнее

Ещё материалы по этой теме:

Загрузка в несколько потоков Browser: компонент для CakePHP Скажи кэшированию… иногда. Часть 2: Memcache Скажи кешированию… иногда :) Управление зависимостями в PHP-коде
основан в 2008 г. © Все права на материалы сайта Seoded.ru принадлежат Алексею Вострову.
Копирование (полное или частичное) любых материалов сайта возможно только с разрешения автора и при указании ссылки на источник.
Ослушавшихся находит и забирает Бабайка!