Что делает «дружественный URL»? - PullRequest
57 голосов
/ 07 февраля 2009

Недавно я прочитал много дискуссий (как на этом сайте, так и в других местах) о «дружественных URL», но я не уверен, что именно делает URL «дружественным» и почему мы действительно заботимся (вплоть до определенное место). Иллюстрация:

Ниже приведен пример URL-адреса, который большинство нынешних веб-разработчиков считают «дружественным»:

www.myblog.com / сообщений / 123 / это-это-The-имя-моему-блог-пост

Принимая во внимание, что это будет считаться «недружественным» (то есть плохим, неандертальцем, невежественным, глупым):

www.myblog.com / posts.aspx? ID = 123

Мои вопросы:

  • Разве «дружественный» URL-адрес не содержит дублирующую идентификационную информацию о данном посте в блоге? Другими словами, если у вас есть идентификатор (123) поста, зачем вам заголовок? Разве это не было бы нарушением мантры "не повторяйся"?
  • Какое значение имеет форма URL для пользователей? Действительно ли пользователи когда-либо вводят полные URL-адреса вручную (кроме TLD, конечно)? Пользователи когда-либо смотрят на URL страницы, чтобы определить, о чем эта страница? Зачем нам заголовок поста в блоге? Разве не для этого нужны тег <title> и содержимое страницы?
  • Я часто слышу SEO как причину, по которой предпочитают "дружественную" форму URL. Почему паук поисковой системы заботится об URL? Разве они не просто автоматизированные части программного обеспечения, которые сканируют страницы (и ссылки на другие страницы, содержащиеся в них)? Если бы поисковые системы были написаны подобно другим программным компонентам (например, компонентам доступа к базе данных), URL-адрес был бы для них просто бессмысленным идентификатором (похожим на rowguid в реляционной базе данных). Если бы я проектировал схему базы данных с чем-то вроде приведенного выше «дружественного» URL-адреса в качестве первичного ключа таблицы, я бы (вполне корректно) вытерся.

Я сказал ранее "до определенного момента", потому что, очевидно, URL-адреса могут выйти из-под контроля. Вот фактический URL от Amazon.com, который, я думаю, никто в здравом уме не посчитает «дружелюбным»:

http://www.amazon.com/Bissell-Kitchen-Housewares/b/ref=amb_link_5001972_17?ie=UTF8&node=694500&pf_rd_m=ATVPDKIKX0DER&pf_rd_s=gp-center-5&pf_rd_r=1ZXNJFE0CCFFDH4B9HGH&pf_rd_t=101&pf_rd_p=405478901&pf_rd_i=510080

Ответы [ 19 ]

59 голосов
/ 07 февраля 2009

Тим Бернерс-Ли (архитектор WWW) написал замечательную статью на эту тему около 10 лет назад.

  • Ваш пример - плохой URL - но не только потому, что у него есть и идентификатор, и "слаг" (сокращенная, дефисированная форма заголовка страницы). Вставка заголовка страницы в ваш URL проблематична в долгосрочной перспективе. Содержание будет меняться со временем. Если вы когда-нибудь измените заголовок этого сообщения в блоге, вам придется выбирать между сохранением старого URL-адреса или изменением URL-адреса в соответствии с новым заголовком. Изменение URL приведет к разрыву любых предыдущих ссылок на эту страницу; и не изменять его означает, что у вас будет URL, который не соответствует странице. Ни один не хорош для пользователя. Лучше просто пойти с www.myblog.com / posts / 123 .

  • Пользователям часто нужно вводить URL-адрес, но, что более важно, иногда они также будут редактировать существующие URL-адреса, чтобы найти другие страницы на вашем сайте. Таким образом, часто хорошо иметь доступные для обнаружения URL . Например, если я хочу увидеть пост № 124, я мог бы легко просмотреть текущий URL-адрес и предположить, что URL-адрес страницы, которую я хочу увидеть, - www.myblog.com/posts/124. Это уровень удобства для пользователей, который может помочь людям, пытающимся найти то, что они ищут. Включение другой информации (например, темы сообщения) может сделать это невозможным - поэтому это уменьшает мои возможности исследования.

  • Забудьте о SEO . Технология поисковых систем уже давно снижает эффективность SEO-взломов. Хороший контент по-прежнему царь - и в конечном итоге вы не сможете играть в систему.

18 голосов
/ 07 февраля 2009

Для меня дружественный URL означает, что была предпринята некоторая попытка включить семантическую информацию в URL, чтобы сделать ее более пригодной для потребления человеком. Это интересный пример того, как интерфейс компьютер-компьютер был расширен и построен для улучшения интерфейса человек-компьютер.

Итак, в ваших двух примерах:

  • www.myblog.com/posts/123/this-is-the-name-of-my-blog-post дружелюбен, потому что вы включили заголовок в URL - он говорит что-то о странице.
  • www.myblog.com/posts.aspx?id=123 недружелюбен, потому что загадочен и неясен: он имеет смысл для базы данных, но ни для вас, ни для меня.

Дружественные URL-адреса являются фантастическими в одних ситуациях и бесполезными в других. По сути, если пользователь когда-либо подвергнется этому, я бы сделал дружественное создание URL-адреса приоритетом, а это не просто вопрос эстетики. Это облегчает намного возврат к URL-адресам из адресной строки, если вы можете быстро увидеть и понять, какие есть различные варианты, плюс это делает более очевидным, куда вы собираетесь перейти, если вы по ссылке с веб-страницы.

Объедините все это с удивительной панелью в Firefox 3+ (конечно, также и в других браузерах), и автоматическое заполнение в адресной строке становится невероятно мощным, когда вы имеете дело с дружественными URL-адресами.

11 голосов
/ 07 февраля 2009

Похоже, что существует много противоречивой информации о том, как именно строка запроса влияет на сканеры, но единодушным является то, что наличие более пары параметров вредит вашему SEO, потому что длинная переменная строки запроса указывает на динамический контент, и поэтому большинство поисковых систем быть менее агрессивным при индексации вашей страницы.

Добавление слага в ваш URL, например this-is-the-name-my-blog-post из вашего примера, также делает ваши ссылки более отличными друг от друга, чем простой идентификатор номер, и добавляет более значимые слова в URL. Это все, что ищут поисковые системы.

Лично я нахожу такие URL намного проще для визуального анализа, потому что используется меньше знаков препинания, а пары имя-значение в строке запроса могут быть очень многословными и трудными для запоминания.

7 голосов
/ 07 февраля 2009

Это хороший момент о том, как вы помещаете ненужную информацию в URL.

/581418/chto-delaet-druzhestvennyi-url

Как только уникальный идентификатор 522466 известен - все остальное бесполезно, поэтому он служит лишь для того, чтобы URL выглядел «красиво» и предоставлял пользователю представление о том, на что ссылается страница. Но это создает другую проблему. Большинство сайтов не «проверяют» эту часть URL, поэтому вы можете указать -

/581418/chto-delaet-druzhestvennyi-url

Тем не менее, он по-прежнему будет ссылаться на этот пост. Вы можете видеть, как это может вызвать больше проблем, чем они стоят, потому что они могут быть использованы злонамеренно.

Я чувствую, что Дигг принял правильный подход к этому. Они не используют идентификаторы в своих URL. За кулисами они получают идентификатор из своей базы данных только по названию.

http://digg.com/linux_unix/I_Like_Linux_so_my_aunt_sends_me_this_for_Christmas

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

На самом деле, названия играют такую ​​огромную роль, что в мире digg люди «слепо копают», основываясь исключительно на том факте, что им нравится название, или оно им интересно. Если ваш URL выглядит интересно, возможно, вы получаете больше трафика на ваш сайт. В то же время вы будете делать его более удобным для пользователя, красивее, и поисковые системы будут вам благодарны. Насколько я понимаю, дружественные URL-адреса являются победой для всех.

6 голосов
/ 07 февраля 2009

Мои мысли о ваших трех пулях:

  • Я бы сказал, что это не оптимальный URL. Я понятия не имею, почему можно было бы показать и идентификатор сообщения и заголовок. Я вообще никогда не включаю идентификаторы записей в свои URL, только заголовки и (иногда) даты
  • Для пользователей, чем короче, тем лучше.
  • Поисковые системы смотрят на URL. Имеет ли это смысл или нет, они делают. Наличие ключевых слов в URL предложит некоторую выгоду SEO.
4 голосов
/ 14 февраля 2009

Как и для:

Разве это не было бы нарушением мантры "не повторяйся"?

Это относится к приложению CODE !! , а не к самому приложению !!

Имеет смысл иметь

  • Заголовок в теге
  • В URL
  • И как первая строка в содержании.

И почти во всем остальном контенту это нужно.

Что означает эта «мантра», если ваш код должен выглядеть следующим образом:

  <title><%=obj.getTitle()%></title>
  Reading:<h1><%=obj.getTitle()%></h1>
  Link to this:<a href="getHrefFor( object.getTitle() )">obj.getTitle()</a>
  Etc. etc.

Вместо использования разных методов с копируемым / вставленным кодом во всем приложении.

4 голосов
/ 07 февраля 2009

Ааа ... хитрость в том, с кем дружит URL. Поисковые системы воспринимают первый URL-адрес как более дружественный, потому что он, очевидно, содержит информацию о содержании в URL-адресе и не похож на ту же страницу, повторяемую с другим параметром.

Например, сравнивая

www.aTvShowSite.com/show.aspx?id=123
www.aTvShowSite.com/show.aspx?id=124

робот скажет, хорошо, я не знаю, что это такое ... но мне они кажутся одной страницей.

В то время как сравнение

www.aTvShowSite.com/shows/AmericanIdol
www.aTvShowSite.com/shows/Lost

делает их похожими на разные страницы (хотя это может быть одна и та же страница aspx, которая их обслуживает), и роботы имеют тенденцию ранжировать их выше.

EDIT: Кроме того, следует отметить, что многие роботы просматривают текст URL-адреса, чтобы определить его полезность, поэтому при поиске «Потерянный» URL второго типа, скорее всего, попадет больше, чем первый, даже если содержимое страницы идентично. *

4 голосов
/ 07 февраля 2009

Во-первых, они дружелюбны к поисковым роботам. Google и другие пользователи высоко ценят слова в URL, которые совпадают со словами на странице, поэтому, если заголовок вашего сообщения в блоге находится в URL, это поможет вашему поисковому соку.

Во-вторых, они дружелюбны к людям, которые не знают, что они посещают. По какой из ссылок, которые вы использовали для сравнения, вы с большей вероятностью перейдете по ссылке в своем твиттере / электронной почте / IM / и т. Д.

4 голосов
/ 07 февраля 2009

Я с тобой согласен, но тссс никому не говори.

Это просто мое скромное мнение, но мне кажется глупым, что

/581418/chto-delaet-druzhestvennyi-url

и

/581418/chto-delaet-druzhestvennyi-url

это та же страница. Я имею в виду, я вижу, что заголовок вопроса через дефис дает URL некоторый контекст, но если вы не знаете, что эта часть необязательна, URL просто излишне удлиняется.

3 голосов
/ 07 февраля 2009

«Недружественный» URL, который вы показываете, раскрывает детали реализации: что, если в будущем вы решите отказаться от ASP и использовать что-то еще? Вам придется изменить все URL-адреса (baad!) Или использовать схему переименования.

Повторять заголовок в URL-адресе, возможно, не так уж и нужно, но это оказывается удобным, когда вы многократно вставляете ссылки, чтобы дважды проверить, что вы ссылаетесь на правильное место.

...