URLを構成するにあたって,その末尾をどうするかを考えます。
末尾のパターン
末尾のパターンとしては次のようなものが考えられます。
A. example.com/sample.html
B. example.com/sample/
C. example.com/sample
Aがリクエストされるとsample.htmlというファイルを探します。最も基本的な形ですね。
Bはほかの2つのパターンと違い,末尾にスラッシュ(トレイリングスラッシュといいます。)がついているので,ファイルではなくディレクトリを表しています。リクエストされるとsampleディレクトリの中のindex.htmlやindex.phpなどを探します。
Cがリクエストされるとsampleファイル(拡張子なし)を探します。ここまではAと一緒ですが,sampleファイル(拡張子なし)が見つからなかった場合,多くのサーバでは自動的に末尾にスラッシュを付加してsampleディレクトリの中のindex.html等を探します。つまり,sampleファイルがなかった場合はBと同じになります。
採用した構造
Aのパターン(拡張子htmlあり)を採用することにしました。やはり,素直でシンプルなのが一番かなあと。将来,WordPress等のCMSの運用をやめて静的ファイルでサイトを維持することも見据えています。
Bのパターンはページを指定するとディレクトリを見に行くという挙動に違和感があったのと,将来CMSの使用をやめて静的ファイルをサーバに置くことにしたときにページごとにディレクトリを作りその中にindex.html等を配置するのは大変だと思い候補から外しました。
Cのパターンでは静的ファイルでの運用にしたとき拡張子なしのファイルを用意することになり,拡張子ありに比べてファイルの扱いが面倒(エディタなどがファイルの種類を認識してくれない。)だと思いました。
B,Cのパターンで静的ファイル運用する場合でも.htaccessなどを用いて拡張子ありのファイルに転送することはできると思いますが,それならば最初から拡張しありにしておけばいいのではと思います。
拡張子を表示しているとURLの永続性が保てないという意見に対しては次のように考えます。
まず,将来システムが変わるかもしれない可能性についてです。拡張子にphpやjspのような,ページを生成するシステムの言語に紐づいた拡張子を表示している場合には,生成システムの言語が変わったら,違う言語の拡張子が付いたままでは不都合が生じるかもしれません。しかし,生成結果であるHTMLに基づくhtmlを拡張子にすることにはその批判はあたらないと思います。どのような言語のシステムを用いたとしても,結果としてHTMLのページを生成していることは変わらないからです。
もう一つの可能性はHTMLがWebページの標準ではなくなることですが,これはそもそもそう簡単には起こりえないことでしょう。バージョンによる修正はあってもHTMLが標準であることは揺らぎにくいのではないでしょうか。もっとも,名前がHTMLから別のものに変更になる可能性はあるかもしれません。しかし,その場合は,変更が名前だけであるなら,旧名称に基づくファイルをブラウザ等がサポートしなくなったりはしないと思います。
ということで,このサイトではURLの末尾に拡張子htmlを表示することにしました。URLの構成要素とあわせると次のようになります。
年月日-slug.html
構造タグで書くと
%year%%monthnum%%day%-%postname%.html
例
20170817-url-structure.html