Удобочитаемые URL-адреса: желательно также иерархические?

В недавно перенесенном вопросе о понятных человеку URL я позволил себе разработать небольшую мою хобби-лошадку:

Когда я сталкиваюсь с URL-адресами, как http://www.example.com/product/123/subpage/456.html Я всегда думаю, что это попытка создания значимых иерархических URL, которые, однако, не являются полностью иерархическими. Я имею в виду, что вы должны быть в состоянии отрезать один уровень за раз. В приведенном выше URL имеет два нарушения по этому принципу:

  1. /product/123 это одна часть информации, представленная в виде двух уровней. Было бы более правильно представить как /product:123 (или любой другой разделитель, который вам нравится)
  2. /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://stackru.com/users/52162:

  • http://stackru.com/users/52162 - Единый профиль
  • http://stackru.com/users - Список пользователей
  • http://stackru.com/ - корень

Тем не менее, канонический URL для профиля на самом деле http://stackru.com/users/52162/jensgram который кажется избыточным (одна и та же конечная точка представлена ​​на двух иерархических уровнях). Альтернатива: http://stackru.com/users/52162-jensgram (или любой другой последовательно используемый разделитель).


1) Содержит полную информацию, не зависящую от "более глубоких" элементов.

1 ответ

Решение

Иерархические URL этого типа "http://www.example.com/product:123/456.html" так же бесполезны, как и "http://www.example.com/product/123/subpage", потому что когда пользователи видят Ваши URL, они не заботятся об идентификаторах из вашей базы данных, они хотят значимых путей. Вот почему Stackru помещает заголовки вопросов в URL: "http://stackru.com/questions/4017365/human-readable-urls-prefebly-hierarchical-too".

Google советует не практиковать замену обычных запросов, таких как "http://www.example.com/?product=123&page=456", потому что, когда каждый сайт разрабатывает свою собственную схему, сканер не знает, что означает каждая часть, если это важно или нет. Google изобрел изощренные механизмы для поиска важных аргументов и игнорирования неважных, что означает, что вы добавите больше страниц в индекс и будет меньше дубликатов. Но эти алгоритмы часто терпят неудачу, когда веб-разработчики изобретают свою собственную схему.

Если вы заботитесь как о пользователях, так и о сканерах, вы должны использовать вместо них такие URL:

Кроме того, поисковые системы дают более высокий рейтинг страницам с ключевыми словами в URL.

Другие вопросы по тегам