Удобочитаемые URL-адреса: желательно также иерархические?
В недавно перенесенном вопросе о понятных человеку 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://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:
- http://www.example.com/products/greatest-keyboard/benefits - подстраница
- http://www.example.com/products/greatest-keyboard - страница продукта
- http://www.example.com/products - список продуктов
- http://www.example.com/ - корень
Кроме того, поисковые системы дают более высокий рейтинг страницам с ключевыми словами в URL.