スタートページ優先順位

スタートページが意図しないものになることがある理由と、サイト作りに与える影響について。

DokuWikiは、末尾が名前空間のURLでアクセスすると、「設定やページ名や場所的にスタートページっぽいページ」を表示する 仕様になっています。

地味に親切設計ではあるけど、サイトの作り方によっては大きな影響を与えます。

「スタートページ」とは、ある名前空間の代表となるページの事。

HTMLファイルで作る古典的なサイトだと、index.htmlに近い。

スタートページの仕様

/inc/pageutils.phpの「Namespace autolinking from URL」により、末尾が名前空間のURLを指定した場合、以下の優先順位でスタートページが割り当てられる。

なお、「管理ボタン→サイト設定→スタートページ名」で、スタートページを「start」という名前に設定している…という前提で話を進めます。

1. start

名前空間内に「start」という名前のページがあれば、そのページに転送する(http://www.dokuwiki.org/namespaces参照)。

たとえば、http://example.com/にDokuWikiを設置し、URL書き換えを「.htaccess」にした場合、

  • example.com/ns:にアクセスすると、example.com/ns:startに転送される
  • 区切り文字をスラッシュ化していたら、example.com/ns/にアクセスするとexample.com/ns/startに転送される

サイト全体のトップページでは、普通は転送は行われない。

example.com と example.com/start は同じ内容だけど、example.comにアクセスしてもexample.com/startに転送されたりはしない。

2. inside

名前空間内に名前空間と同じ名前のページがある場合、それをスタートページとして表示する。

たとえば、

  1. example.com/ns:startはない
  2. example.com/ns:nsはある

という場合、example.com/ns:にアクセスするとexample.com/ns:nsに転送される。

3. same

名前空間と同じ階層に名前空間と同じ名前のページがある場合、それをスタートページとして表示する。

たとえば、

  1. example.com/ns:startはない
  2. example.com/ns:nsもない
  3. example.com/nsはある

という場合、example.com/ns:にアクセスするとexample.com/nsに転送される。

4. 上記のどれにも当てはまらない

スタートページ名で設定した名称のページ(標準設定だと「start」)を表示し、「このトピックには文書が作成されていません」と表示する。

indexmenu2プラグイン(※indexmenuとは別のプラグイン)によると、insideはindexmenuプラグインのクラシカルな動作、sameはDokuWikiのクラシカルな動作で、startが新しい動作らしい。

この仕様がサイト作りに与える影響

末尾が名前空間のリンクはあまり書かない方がいい

[[namespace:]]というリンクが指し示すページが変わる可能性がある。

プラグインを使う際

「プラグインを使って、スタートページに名前空間内のページ一覧を自動生成しよう」という場合に影響が出る。

  • あるカテゴリ(名前空間)の代表となるページに、そのカテゴリに属するページ一覧がある
  • 一覧のリンクをクリックすると、各ページに行ける

という構成の場合、感覚的には大体こんな風に感じるかと思います。

@人間の目で見たページ構成
名前空間のスタートページ--+--名前空間内のページその1
                          |
                          +--名前空間内のページその2

startやinsideでは、名前空間のスタートページは実は名前空間内に存在する。

@startやinsideの実際のページ構成
(名前空間フォルダ)--+--名前空間のスタートページ
                      |
                      +--名前空間内のページその1
                      |
                      +--名前空間内のページその2

sameでは、名前空間のスタートページは実は名前空間外に存在する。

@sameの実際のページ構成
(上位名前空間フォルダ)--+--名前空間のスタートページ
                          |
                          +--(名前空間フォルダ)--+--名前空間内のページその1
                                                   |
                                                   +--名前空間内のページその2

よって、indexmenuなど「名前空間内のページ一覧を表示する」系統のプラグインでは、start/insideとsameでは指定方法が変わる。

単にページをリンクでつないでいくだけなら「名前空間のスタートページ」なんてほとんど意識する必要はないです。

indexmenuプラグインとかをよく使う場合には、意識した方が便利です。というのは、indexmenuプラグインには「start」「inside」「same」オプションがあり、「ある名前空間のスタートページをどれにするか」を明示的に指定出来るため。

スタートページ扱いになったページはデザイン面で優遇を受けるため、スタートページを意識しつつサイトを作れば、サイドバーやコンテンツの自動生成ナビゲーションメニューが綺麗になります。

DokuWiki公式サイトは「same」

個人的には、sameを推奨します。理由は以下の通り。

  • リダイレクトされてもURLがほとんど変わらない(/ns:→/ns)。
  • 名前空間内にスタートページがある場合、「名前空間内のページ一覧を自動生成」すると自分自身も表示してしまう。除外設定をあれこれやる1)よりも、名前空間外にスタートページがあった方が楽。
  • DokuWiki公式サイトはほとんどがsame、つまり、「名前空間と同じ階層にある、名前空間と同じ名前のページを表示」する方針でサイトを作っている。startページはほとんど作っていない。

補足

末尾文字の処理

URL書き換え関連の設定によって、末尾文字の扱いが変わる。

たとえばURL書き換えをして「区切り文字にスラッシュを使う」設定を無効にしている場合、末尾にスラッシュを書いても無視される。「/ns」というページと「/ns:ns」というページがある場合、/ns/と書いたら/ns:nsにリダイレクトされる事はなく、/nsというページが表示される。

CMSやブログでは、この問題はあまり起こらない

結局のところ、スタートページ関連の問題は、

  • DokuWikiでは、名前空間は「フォルダ」であり、実体のある「ページ」ではない。
  • 末尾が名前空間のURLを許可している。ただし、DokuWikiがスタートページだと判断したページにリダイレクトされる。
  • 微妙に親切設計なおかげで、「そんなページはありません」という事態が起こりにくい一方、スタートページの実体が名前空間内にある場合と名前空間外にある場合の2パターンが出てくる。

というDokuWikiの仕様によります。

Movable TypeWordPressは、カテゴリのトップページは基本的に「そのカテゴリ内の記事を一覧表示する場所」であり、記事とは全く別のものです。

MODxFrog CMSのように、サイトのコンテンツが実質的に全てページで構成されているCMSでは、この手の問題は起こりません。

(参考)他のWikiのスタートページの標準的な取り扱い

各Wikiを細かく調査したわけじゃないです。あくまで「標準動作はこれっぽい」という事です。

  • PukiWiki……標準機能では階層化が精一杯で、トップページという概念そのものがなさそう。末尾を「/」にすると「有効なWikiNameではありません」と出てくる。
  • MediaWiki……末尾が「/」のURLは「/」なしと同じページになる(/category/と書くと、/categoryが表示される)。末尾が「:」のURL(名前空間で終わるURL)は不正扱いとなる。そもそも、「:」と「/」の扱いがDokuWikiとは異なるし、標準名前空間では階層構造そのものが無効。
  • TikiWiki……末尾が「/」で終わるURLは「ページがありません」になる。
  • PmWiki……カテゴリ内にある同名のページが優先されるっぽい(DokuWikiでいうinsideにあたる)。
  • FosWiki……末尾が「/」で終わるURLを指定すると、スタートページとして指定しているページに転送される(DokuWikiのstartと同じパターン)。
  • Wikka Wiki……名前空間とかサブカテゴリみたいな概念がない?
  • WikyBlog……末尾が「/」で終わるURLは「/」なしと同じページになる(DokuWikiのsameにあたる)。
1) 出来ないプラグインも多い
 
dokuwiki/tips/startpage.txt · 最終更新: 2009/04/26 13:55 by admin
 
特に明示されていない限り、本Wikiの内容は次のライセンスに従います:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki