まず、いくつかの歴史:
これらの URL の本来の理由は、データベースを ID のみでインデックス化することを人々が望んでいたことです。slug によるインデックス作成 (および一意性の強制) は、コンピューターとプログラマーの両方にとって余分な作業でした。Rails により、このスタイルが普及しました ( /page/1
)。
しかし、このスタイルは検索エンジンにとってかなり不透明です。そのため、人々は ID ( ) の後にスラッグを追加/page/1-slug-for-page
して、検索エンジン (およびユーザー) を支援しました。しかし、最後のテキストは無関係でした。重要なのは数だけでした。スラッグはデータベースに保存されないこともあり (自動生成される場合もあります)、スペースを節約するためにインデックスが作成されていませんでした。
どちらが好ましいですか?
ID を URL に入れる方法は、どちらのスタイルでも構いませんが、「数字の後にスラッグ」のスタイルがより一般的です。
現在のスラッグと一致しないスラッグには、正規 URL へのリダイレクトを使用します。しかし、スラッグが一意である場合、スラッグはあるがIDのないURLからのリダイレクトも行うのでしょうか?
ID
またはを選択slug
して実行するだけです。
1) ID で検索する場合は、スラッグを無視する必要があります (検索エンジン専用です)。ID があれば、「本物の」スラッグに簡単にリダイレクトできます。(切り捨てられた URL などを修正するため)
2) スラッグで検索する場合、スラッグは一意である必要があります。(ほとんどのサイトは、これを簡単にするために日付でスコープします)。スラッグでデータベース ルックアップを実行すると、なぜ URL に ID が必要なのかが明確になりません。(それらは見栄えが悪く、非常に恣意的であるため、それらを削除することをお勧めします。) あなたが提案しているのは、(あなたとコンピューターにとって) 余分な作業ですが、それが役立つかどうかはわかりません。
スラッグと ID のインデックス作成のインデックス サイズ/速度のトレードオフについて心配する必要があるのは、トラフィックの多いサイトだけです。その場合でも、トリックを行うことで差を最小限に抑えることができます。(つまり、スラッグを検索せず、代わりにスラッグの MD5 の最初の 8 文字を検索します。)