Я рекомендую сократить слаг до такой степени, что длина всего URL будет не более 72 символов. Это давняя конвенция для электронной почты, позволяющая использовать несколько уровней цитирования до достижения стандартного предела в 80 символов. Я знаю, что современные технологии означают, что нам не нужно заботиться о пределах длины линии, но это все же разумное соглашение по разным причинам. См. Следующее обсуждение: Существует ли действительная причина для обеспечения максимальной ширины 80 символов в файле кода, в этот день и возраст? .
Также существует практическое опасение, что ваш URL-адрес может остаться неизменным и кликабельным в некоторых почтовых клиентах, если они обернуты.
Что касается того, как сохранить ваши URL-адреса разумной длины, я думаю, что URL-адреса должны выбираться вручную, когда это возможно.
Вы написали целую статью, а также можете составить краткий URL для нее.
Ниже приведен файл .htaccess для моего блога, если он окажется для вас полезным.
Каждая статья имеет длинный URL-адрес, например
myblog.com/2010/05/30/ideal-length-of-url-slug
(Wordpress предлагает значение по умолчанию, но я обычно немного сокращаю его вручную.)
И затем я использую правило переписывания, как показано ниже, чтобы сделать краткую версию, которую я обычно могу запомнить и легко упомянуть (или для Твиттера, конечно). Что-то вроде
myblog.com/slugs
Вот содержимое моего файла .htaccess в / var / www / html / myblog:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^admin/?$ wp-admin [L]
# Aliases for blog posts: (NB: NEVER CHANGE/DELETE THESE; ONLY ADD NEW ONES!)
RewriteRule ^flu/?$ 2009/03/21/the-future-is-yesterday [R,L]
RewriteRule ^oracle/?$ 2009/03/25/the-oracle-of-brackets [R,L]
RewriteRule ^perfbrack/?$ 2009/03/29/the-perfect-bracket [R,L]
RewriteRule ^nytimes/?$ 2009/04/01/anon-sources-at-the-new-york-times [R,L]
RewriteRule ^mktbottom/?$ 2009/04/07/finding-the-market-bottom [R,L]
RewriteRule ^landlords/?$ 2009/05/24/landlords [R,L]
RewriteRule ^buyrent/?$ 2009/06/01/buyrent [R,L]
RewriteRule ^sunk/?$ 2009/06/23/sunk [R,L]
RewriteRule ^horse/?$ 2009/07/01/horse [R,L]
RewriteRule ^wellmanblog/?$ 2009/07/31/wellmanblog [R,L]
RewriteRule ^centmail/?$ 2009/08/15/centmail [R,L]
RewriteRule ^longtail/?$ 2009/08/31/anatomy-of-the-long-tail [R,L]
RewriteRule ^scarequotes/?$ 2009/09/30/scarequotes [R,L]
RewriteRule ^scare/?$ 2009/09/30/scarequotes [R,L]
RewriteRule ^dst/?$ 2009/10/31/dst [R,L]
RewriteRule ^searchpred/?$ 2009/11/30/what-can-search-predict [R,L]
RewriteRule ^scrooge/?$ 2009/12/31/scrooge [R,L]
RewriteRule ^pmhype/?$ 2010/01/14/prediction-without-markets [R,L]
RewriteRule ^predmarkets/?$ 2010/01/14/prediction-without-markets [R,L]
RewriteRule ^calibration/?$ 2010/02/28/calibration [R,L]
RewriteRule ^calib/?$ 2010/02/28/calibration [R,L]
RewriteRule ^calresults/?$ 2010/03/31/calibration-results [R,L]
RewriteRule ^misleadingmeans/?$ 2010/04/30/misleading-means [R,L]
</IfModule>
Однако, оглядываясь назад, я бы отбросил даты в URL и сделал что-то вроде того, что делает StackOverflow, пытаясь получить лучшее из обоих миров с краткими и описательными URL-адресами.
StackOverflow позволяет вам обрезать или даже изменять URL-адреса для вопросов столько, сколько вам нужно после части с идентификатором вопроса. Таким образом, все следующие ссылки являются ссылками на этот вопрос:
Последний по-прежнему слишком длинный для моих вкусов, поэтому я бы назвал канонический URL-адрес
myblog.com/foo
и затем разрешить косую черту, за которой следует что-нибудь еще, например
myblog.com/foo/fooing-and-barring-in-the-modern-world
Вот для этого правило переписывания:
RewriteRule ^foo(/.*)?$ foo [R,L]
Дополнительные правила могут быть добавлены, если вы хотите, например, myblog.com/bar в качестве псевдонима для myblog.com/foo:
RewriteRule ^bar(/.*)?$ foo [R,L]
Недостатком здесь является то, что если вы хотите, чтобы ваши слагы статей находились в глобальном пространстве имен вашего сайта - что, я думаю, предпочтительнее, чем myblog.com/articles/foo, - то вам нужно добавить правило перезаписи. за каждую статью.