スタートページが意図しないものになることがある理由と、サイト作りに与える影響について。
DokuWikiは、末尾が名前空間のURLでアクセスすると、「設定やページ名や場所的にスタートページっぽいページ」を表示する 仕様になっています。
地味に親切設計ではあるけど、サイトの作り方によっては大きな影響を与えます。
HTMLファイルで作る古典的なサイトだと、index.htmlに近い。
/inc/pageutils.phpの「Namespace autolinking from URL」により、末尾が名前空間のURLを指定した場合、以下の優先順位でスタートページが割り当てられる。
なお、「管理ボタン→サイト設定→スタートページ名」で、スタートページを「start」という名前に設定している…という前提で話を進めます。
名前空間内に「start」という名前のページがあれば、そのページに転送する(http://www.dokuwiki.org/namespaces参照)。
たとえば、http://example.com/にDokuWikiを設置し、URL書き換えを「.htaccess」にした場合、
example.com と example.com/start は同じ内容だけど、example.comにアクセスしてもexample.com/startに転送されたりはしない。
名前空間内に名前空間と同じ名前のページがある場合、それをスタートページとして表示する。
たとえば、
という場合、example.com/ns:にアクセスするとexample.com/ns:nsに転送される。
名前空間と同じ階層に名前空間と同じ名前のページがある場合、それをスタートページとして表示する。
たとえば、
という場合、example.com/ns:にアクセスするとexample.com/nsに転送される。
スタートページ名で設定した名称のページ(標準設定だと「start」)を表示し、「このトピックには文書が作成されていません」と表示する。
[[namespace:]]というリンクが指し示すページが変わる可能性がある。
「プラグインを使って、スタートページに名前空間内のページ一覧を自動生成しよう」という場合に影響が出る。
という構成の場合、感覚的には大体こんな風に感じるかと思います。
↓
@人間の目で見たページ構成
名前空間のスタートページ--+--名前空間内のページその1
|
+--名前空間内のページその2
startやinsideでは、名前空間のスタートページは実は名前空間内に存在する。
↓
@startやinsideの実際のページ構成
(名前空間フォルダ)--+--名前空間のスタートページ
|
+--名前空間内のページその1
|
+--名前空間内のページその2
sameでは、名前空間のスタートページは実は名前空間外に存在する。
↓
@sameの実際のページ構成
(上位名前空間フォルダ)--+--名前空間のスタートページ
|
+--(名前空間フォルダ)--+--名前空間内のページその1
|
+--名前空間内のページその2
よって、indexmenuなど「名前空間内のページ一覧を表示する」系統のプラグインでは、start/insideとsameでは指定方法が変わる。
indexmenuプラグインとかをよく使う場合には、意識した方が便利です。というのは、indexmenuプラグインには「start」「inside」「same」オプションがあり、「ある名前空間のスタートページをどれにするか」を明示的に指定出来るため。
スタートページ扱いになったページはデザイン面で優遇を受けるため、スタートページを意識しつつサイトを作れば、サイドバーやコンテンツの自動生成ナビゲーションメニューが綺麗になります。
個人的には、sameを推奨します。理由は以下の通り。
URL書き換え関連の設定によって、末尾文字の扱いが変わる。
たとえばURL書き換えをして「区切り文字にスラッシュを使う」設定を無効にしている場合、末尾にスラッシュを書いても無視される。「/ns」というページと「/ns:ns」というページがある場合、/ns/と書いたら/ns:nsにリダイレクトされる事はなく、/nsというページが表示される。
結局のところ、スタートページ関連の問題は、
というDokuWikiの仕様によります。
Movable TypeやWordPressは、カテゴリのトップページは基本的に「そのカテゴリ内の記事を一覧表示する場所」であり、記事とは全く別のものです。
MODxやFrog CMSのように、サイトのコンテンツが実質的に全てページで構成されているCMSでは、この手の問題は起こりません。
各Wikiを細かく調査したわけじゃないです。あくまで「標準動作はこれっぽい」という事です。