Joomla!のパーマリンク

メニューの作り方によってURLが変わる

ブログやWikiでは、各ページの「場所」は一意に定まっている事が多い。たとえばhttp://example.com/category/pagenameというページがあった場合、

  • ナビゲーションメニュー
  • サイト内検索

など、どの経路を通っても、http://example.com/category/pagenameにたどり着く。
もちろん、パーマリンクの設定を変更したり、ページ名やカテゴリ名1)を変更したりすれば、ページの場所は変わる。逆に言えば、そういう事をしなければページの場所は変わらない。「人気の記事があるから、サイドバーからその記事へのリンクを張った」というような事をしても、当然ながらページのURLは元のまま。

ところが、標準状態のJoomla!では、 どんなメニューアイテムを作るかによって、ページやカテゴリのURLが簡単に変わる。これは、以下のような理由による。

  • ブログでは、「ページID」「いつ書いたか」「どのカテゴリに属するか」などが、そのままURLの決定要因となる事が多い。
  • 標準状態のJoomla!では、ページやカテゴリのメインURLを決定する際、「セクション」や「カテゴリ」よりも「どのメニューアイテムからリンクされているか」を重視している。

初期状態のURL

サイト→基本設定で、

  • サーチエンジンフレンドリーURL: はい
  • Apache mod_rewriteを利用: はい

に設定している前提です。

アーティクルの主な本来(?)のURL

  • /component/content/article/アーティクルID
  • /component/content/article/アーティクルID-エイリアス

比較的目にする事が多いのは「/component/content/article/カテゴリID-エイリアス/アーティクルID-エイリアス」だが、「article」と「アーティクルID」の間の文字列は何が入っていても関係ない。

カテゴリの主な本来(?)のURL

  • /(セクション系メニューアイテムのエイリアス)/カテゴリID
  • /(セクション系メニューアイテムのエイリアス)/カテゴリID-カテゴリのエイリアス

セクションの本来(?)のURL

不明 FIXME

要は、アーティクルIDやカテゴリIDでコンテンツの場所を示しており、エイリアスは単に人間が理解しやすいようにつけたしているだけ。

主なメニューアイテムの優先順位

  • メニュー内に同格のメニューアイテムが複数ある場合は、以下のように優先順位が決まる。
    1. 階層が上
    2. 階層が同じなら並び順が上
  • サイト内のカテゴリやアーティクルへのリンクは下記のような優先順位で変更されるが、各メニューアイテムによって定義されるセクションやカテゴリやアーティクルのURLはリンクが張られていないだけでちゃんと存在する。つまり、URLは違うが中身はほぼ完全に同じというページが、サイト内に複数存在しうる。

アーティクルのURL

  • スタンダード記事レイアウトのエイリアスが使われる。なければ、そのアーティクルのエイリアスが使われる
  • 親メニューアイテムがある場合、「/親メニューアイテムのエイリアス/スタンダード記事レイアウトのエイリアス」となる。

スタンダード記事レイアウトは特定アーティクルに直接リンクするメニューアイテムなので、URLにカテゴリIDやアーティクルIDが挿入されない。よって、綺麗なURLになる。

カテゴリのURL

  • スタンダードカテゴリレイアウトやBlogカテゴリレイアウトがあれば、そのエイリアスが使われる。なければ、そのカテゴリのエイリアスが使われる
  • この2つは同格。
  • 他のメニューアイテムの下にある場合、「/親メニューアイテムのエイリアス/カテゴリレイアウトのエイリアス」となる。

セクションのURL

  • スタンダードセクションレイアウトやセクションBlogレイアウトがあれば、そのエイリアスが使われる。なければ、そのセクションのエイリアスが使われる? FIXME
  • この2つは同格。
  • 親メニューアイテムがある場合、「/親メニューアイテム/セクションレイアウトのエイリアス」となる。

実はこだわりどころじゃない?

ブログでは「不変のURI」にこだわる人が結構いて、

  • HTMLファイルを使わなくなったのに、ページに「.html」という拡張子をつける
  • URIを仕方なく変更した場合は、リダイレクトに凝る

といった事もよく見られるけど、Joomla!はセクションやカテゴリを変更しなくても、メニューをほんの少しいじるだけで人の目に触れるURLが簡単に変わり得ます。

でも、ここらへんの話はJoomla!ユーザーの間で問題になってる感じが全然しない。

  • 「ある記事のURLは不変であり、その記事に対してリンクを張る」というのはブログ的Wiki的発想であって、CMSではそういう考え方をする人があまりいない?
  • 要はメニューアイテムの作り方によってアーティクルのURLが定まるわけだから、「どんなメニューアイテムを作るかよく考える」「メニューアイテムを不用意に削除したりむやみにエイリアスを変更したりしない」など、ちょっと気を使えばいいだけのこと

というあたり? 

実際、Joomla!で制作されたサイトを見ていくと、同じセクション・同じカテゴリにあるのにメニューアイテムの作り方によってURLがバラバラになっていると思われる例がものすごく多いんで、大して気にしない人がほとんどなのかも…。

sh404SEFとか

JoomlaでURLにこだわる人向けの定番エクステンションは、sh404SEFです。常に/category/pagenameみたいなURLを生成するようになります。

ただこのコンポーネントはカテゴリのエイリアスを使わずタイトルを使うので、タイトルに日本語があるとサイト内のどこかでURLに日本語が出てくる可能性があります。

1) 正確には、URLなどで使われる文字列。WordPressではスラッグ、DrupalやJoomla!ではエイリアス
 
joomla/permalink.txt · 最終更新: 2009/05/06 22:41 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