Читабельные URL-адреса:желательно еще и иерархический?
-
26-09-2019 - |
Вопрос
В теперь перенесен вопрос Что касается удобочитаемых URL-адресов, я позволил себе доработать свою маленькую лошадку:
Когда я сталкиваюсь с такими URL-адресами, как
http://www.example.com/product/123/subpage/456.html
Я всегда думаю, что это попытка создать осмысленные иерархические URL-адреса, которые, однако, не являются полностью иерархическими.Я имею в виду, что вы должны уметь отрезать один уровень за раз.В приведенном выше URL-адресе есть два нарушения этого принципа:
/product/123
является один часть информации, представленная в виде двух уровней.Правильнее было бы представить это как/product:123
(или любой другой разделитель, который вам нравится)/subpage
весьма вероятно, что это не сущность сама по себе (т. е. вы не можете подняться вверх один уровень от456.html
какhttp://www.example.com/product/123/subpage
это «ничто»).Поэтому я считаю более правильным следующее:
http://www.example.com/product:123/456.html
Здесь вы всегда можете перейти на один уровень вверх:
http://www.example.com/product:123/456.html
— Подстраницаhttp://www.example.com/product:123
— Страница продуктаhttp://www.example.com/
- КореньСледуя той же философии, следующее имело бы смысл [и содержало дополнительную ссылку на список продуктов]:
http://www.example.com/products/123/456.html
Где:
http://www.example.com/products/123/456.html
— Подстраницаhttp://www.example.com/products/123
— Страница продуктаhttp://www.example.com/products
— Список продуктовhttp://www.example.com/
- Корень
Моя основная мотивация для этого подхода заключается в том, что если каждый «элемент пути» (ограниченный /
) является самодостаточным1, вы всегда сможете перейти к «родительскому» элементу, просто удалив последний элемент URL-адреса.Это то, что я (иногда) делаю в своем проводнике, когда хочу перейти в родительский каталог.Следуя той же логике, пользователь (или поисковая система/сканер) может сделать то же самое.По-моему, довольно умно.
С другой стороны (и это важная часть вопроса):Хотя я никогда не смогу предотвратить попытку пользователя получить доступ к URL-адресу, который он сам ампутировал, я неправомерно утверждаю (и уважаю), что поисковая система может сделать то же самое? То есть, разумно ли ожидать, что ни одна поисковая система (или действительно:Google) попытается получить доступ http://www.example.com/product/123/subpage
(пункт 2 выше)?(Или я действительно учитываю здесь только человеческий фактор?)
Это не вопрос личных предпочтений.Это технический вопрос о том, чего я могу ожидать от сканера/индексатора и в какой степени мне следует учитывать нечеловеческие манипуляции с URL-адресами при разработке URL-адресов.
Кроме того, структурная «глубина» http://www.example.com/product/123/subpage/456.html
равно 4, где http://www.example.com/products/123/456.html
это всего 3.Ходят слухи, что эта глубина влияет на рейтинг в поисковых системах.По крайней мере, мне так сказали.(Теперь очевидно, что SEO нет то, о чем я знаю больше всего.) Это (все еще?) правда: влияет ли глубина иерархии (количество каталогов) на рейтинг поиска?
Итак, обоснована ли моя «догадка» с технической точки зрения или мне следует потратить время на что-то другое?
Пример:Делаю это (почти) правильно
Старый добрый ТАК понимает это почти правильно.Дело в точке:профили, например, http://stackoverflow.com/users/52162
:
http://stackoverflow.com/users/52162
— Один профильhttp://stackoverflow.com/users
— Список пользователейhttp://stackoverflow.com/
- Корень
Однако канонический URL для профиля на самом деле http://stackoverflow.com/users/52162/jensgram
что кажется излишним (одна и та же конечная точка представлена на двух иерархических уровнях).Альтернатива: http://stackoverflow.com/users/52162-jensgram
(или любой другой постоянно используемый разделитель).
1) Несет полную информацию, не зависящую от «более глубоких» элементов.
Решение
Иерархические URL-адреса типа «http://www.example.com/product:123/456.html» так же бесполезны, как и «http://www.example.com/product/123/subpage», поскольку, когда пользователи видят ваши URL-адреса, их не волнуют идентификаторы из вашей базы данных, им нужны осмысленные пути.Вот почему StackOverflow помещает заголовки вопросов в URL-адреса:«http://stackoverflow.com/questions/4017365/human-readable-urls-preferably-hierarchical-too».
Google не советует заменять обычные запросы типа «http://www.example.com/?product=123&page=456», потому что, когда каждый сайт разрабатывает свою собственную схему, сканер не знает, что означает каждая часть, если это важно. или нет.Google изобрел сложные механизмы для поиска важных аргументов и игнорирования неважных, что означает, что вы попадете в индекс больше страниц и будет меньше дубликатов.Но эти алгоритмы часто терпят неудачу, когда веб-разработчики изобретают собственную схему.
Если вы заботитесь как о пользователях, так и о сканерах, вам следует использовать такие URL-адреса:
- http://www.example.com/products/greestest-keyboard/benefits — подстраница
- http://www.example.com/products/greestest-keyboard — страница товара
- http://www.example.com/products — список продуктов
- http://www.example.com/ - корень
Кроме того, поисковые системы дают более высокий рейтинг страницам с ключевыми словами в URL-адресе.