urldesign:fancyurl

Fancy URLモード

Nucleusではバージョン2.0からグローバル設定において「URLモード」というオプションを設けています。

ここを「FancyURLモード」に設定して以下の作業を行うと、URLが

http://example.org/index.php?itemid=1234

から

http://example.org/item/1234

に変わります。

このURL形式に変更することで検索エンジンに登録されやすくなる効果が期待できます。

Fancy URLモードへの移行手順

もし下記の手順通り行っても、ページが正常に表示されない場合(Internal Server Errorなどと表示される場合)は、残念ですがこの対策は使えません。上の作業で追加したファイルを速やかに削除し(.htaccessファイルの削除も忘れずに)、管理エリアのグローバル設定においてURLモードを元に戻してください。
  1. /extra/fancyurls ディレクトリにあるindex.html以外の全部のファイルをルートディレクトリ(index.php と action.phpがあるディレクトリ)にコピーします。
  2. すでにルートディレクトリに.htaccessファイルを設置している方はまず現在の.htaccessファイルをダウンロード後に今回の /extra/fancyurls ディレクトリにある.htaccessファイルの中身を追加してください。
    (FTPソフトでは標準設定では.htaccessファイルは見えないことが多いので、確認方法を調べた上で存在を確認してください。)
    .htaccessファイルを設置していなかった方は/extra/fancyurls ディレクトリにある.htaccessファイルをそのまま使用してください。
  3. 「fancyurls.config.php」という名前のファイルの中の$CONF['Self']の値を自分のトップページのURLとします。
    重要: URLの末尾にスラッシュは絶対に入れないでください
  4. 次にindex.phpファイルを編集します。
    • $CONF['Self']の値を「.」(ピリオド1つ)にします。これをやらないと、URLがindex.php/item/1234などとおかしくなります。
    • Nucleus v3.22以降では、さらに1行追加が必要です。
      <?php
      
      $CONF = array();
      
      $CONF['Self'] = '.';
      
      include('./fancyurls.config.php'); 
      
      include('./config.php');
      
      selector();
      
      ?>

      となるように、fancyurls.config.phpを読み込む行を追加してください。

  1. これらの新しくルートディレクトリに追加したファイルをサーバにアップロードします。
  2. 最後に、管理エリアのグローバル設定においてURLモードを「FancyURLモード」に変更します。

これで完了です。

  • スキンによってはRSS auto-discoveryなどでのURLが相対パスで指定されている場合があります。FancyURL形式ではずれが生じるため、ルートからの相対パスか絶対パスで指定しなおす必要があります。

Nucleus v3.22以降におけるFancy URLモード

アップグレード時の注意点

今までのバージョンで正常にFancyURLモード運用ができていて、その後v3.22以降にアップグレードした場合は、下記の点に注意が必要です。

  • index.phpに
    include('./fancyurls.config.php');

    の記述が必要になりました。上記手順を参照してください。

  • ルートに置く「blog」「category」などの名前のファイルの内容もupgradeされています。アップグレード用パッケージファイルを上書きする際、extra/fancyurlsディレクトリにあるファイル群もルートのものと置き換える作業も忘れずに行ってください。
  • 同様に、fancyurls.config.phpもアップグレードしています。下記の定義値が増えていますので追加してください。
        $CONF['ItemKey'] = 'item';
        $CONF['ArchiveKey'] = 'archive';
        $CONF['ArchivesKey'] = 'archives';
        $CONF['MemberKey'] = 'member';
        $CONF['BlogKey'] = 'blog';
        $CONF['CategoryKey'] = 'category';

    (この値の定義は忘れていても自動的に上記内容で補完されます)

追加された機能

URLキーの定義が可能になりました。

http://example.org/index.php?catid=4

http://example.org/category/4

とするのが従来のFancyURLモードでしたが、さらに

http://example.org/c/4

とカスタマイズすることが可能になりました。

以下の手順により行います。

  1. fancyurls.config.phpにて
    $CONF['CategoryKey'] = 'c';

    とする。

  2. ルートに置いた「category」という名前のファイルをコピーして「c」という名前にする
  3. .htaccessにて
    <FilesMatch "^c$">
        ForceType application/x-httpd-php
    </FilesMatch>

    を追加する。

  • すでに存在するディレクトリの名前をurlキーにすることはできません。(上記の例で言えば、「c」という名前のディレクトリがすでに存在していれば「c」というファイルを置くことができないので設定できない、という意味です。)
  • このurlカスタマイズ機能に対応していないプラグインでは、生成するURLがこの設定を反映しないケースがあります。各プラグインの作者に問い合わせるか、フォーラムにて質問して下さい。
    もしくはhttp://japan.nucleuscms.org/bb/viewtopic.php?t=1965が参考になるかもしれません。
 
urldesign/fancyurl.txt · 最終更新: 2011/03/23 21:28 (外部編集)