Semantic Web – WordPress

dirify and Permalink (Movable Type)

with 4 comments

注: Movable Type 3.2x については、まず
  エントリー「Archive File Path Specifiers / Movable Type 3.2」
  » http://www.osbsd.net/2005/10/archive_file_pa.html
をご覧下さい。

Permalink 先のURLとして使用されることが多い個別アーカイブ・ファイル名は、Movable Type のデフォルト設定では、
オリジナルドメイン名 (ないし, WWWサーバのホスト名やユーザ名) + エントリーのタイトル名の自動変換(dirify).拡張子
です。
Movable Type 設定についての日本語ドキュメント(英語版の逐語訳)では、
http://www.movabletype.jp/manual/mtmanual_weblog_config.html#archiving
「デフォルトで個々のアーカイブ・ファイルには、エントリーのタイトルに応じて名前が付けられます。たとえば、’Our Magnificent Day at the Beach(ビーチでの素晴らしい日)’というタイトルのエントリーには’our_magnificent.html’などのファイル名が付けられ、エントリーの作成月に基づき’2004/05/our_magnificent.html’というディレクトリに保存されます。・・・」と記述されています。しかし、日本語のタイトルでは、偽りの説明です。
しかも、PublishCharset (エンコード) の選択: 「UTF-8」 「EUC-JP」 「Shift_JIS」 によって、異なる名前となります。

Ogawa::Memorandaさんの タイトル: dirifyについて考えてみた。
http://as-is.net/blog/archives/000926.html
をご覧になると名づけ方の詳細がわかります。

"ダイナミック (PHP) ページのための設定について" というタイトルで新規エントリを作成すると、

Δ PublishCharset (日本語エンコード):「EUC-JP」
http://hitomi.s47.xrea.com/shellscript.biz/archives/2004/09/aessaphpuiaiass.html
     URL名としては無意味な文字の羅列(phpを含む) となることがあります(注1)。 なお、「Shift_JIS」においても無意味な変換が行われます。

Δ PublishCharset (日本語エンコード):「UTF-8」
http://www.example.com/archives/2004/11/_php.php
     日本語はすべて_ (アンダースコア)に変換されて、英語 php のみ表示されます (すべて日本語タイトルのとき: (注2) (注3) をご覧下さい)。

Δ 個別エントリーアーカイブのテンプレートをファイル名 <$MTEntryTitle dirify="1"$>_<$MTEntryDate format="%m%d%y"$>.php で保存したとき (日本語エンコード: UTF-8):
⇒http://www.example.com/archives/archives/_php__111704.php
   英語であれば行頭から(半角文字数)15以内の文字制限なし_日付.拡張子 となります(注3)。但し、正しく設定しないと、ダイナミック・ページではURLに反映しません。

Δ アーカイブの設定 (□ 以前の形式の個別アーカイブへのリンクをつかう) をチェックしたとき:
http://hitomi.s47.xrea.com/shellscript.biz/archives/000024.html
     個別のアーカイブへのリンクに以前の形式(id)を利用しますか? にチエックを入れ保存すると、連番表示のURLとなり、日本語エンコードには依存しません。

Δ(注1): PublishCharset: EUC-JP における問題点 (タイトルから無意味な URLが生成されてしまう) は、mt.cfg に「DefaultLanguage ja」を設定することで解決するそうです。詳しくは、
    http://as-is.net/blog/archives/000895.html
    http://as-is.net/blog/archives/000910.html
のページをご覧下さい。
make_unique_basename と dirify の利点、欠点が詳しく解説されています。
引用(1)
「一つのエントリに一つのファイル名を対応させる」ために個々のエントリにuniqueな文字列が設定されます(MT::Util::make_unique_basename)。
引用(2)
ただし、make_unique_basenameはそのエントリが作成された時点で呼び出されるので後で日時を変更してもbasenameには反映されません。このbasenameというのはほとほと「使えない奴」なわけです。
Ogawaさんに、再々感謝です。
Δ(注2): タイトルがすべて日本語のとき
⇒ post.html, post_1.html などに変換されます。
Δ(注3): タイトルに英語が含まれているとき
⇒ 同じタイトル名では、エントリが異なっていても、同一のファイル名 (URL)となることがあります。

Δ マルチバイト対策のMT用 plugin "dirifyplus" を使用しても、本質的な解決とはなりません。
http://mt-plugins.org/archives/entry/dirifyplus.php
    アンダースコアを除去したり、(半角)空白をトルツメしたり、ハイフンに変換したり・・・の機能だけのようです。
たとえば、個別エントリーアーカイブのテンプレートのファイル名を指定すると、
(例) URL: http://www.example.com/archives/how-to-upgrade-movable-type-and-mt-manual-weblog-config.html
と表示できます。

Written by support

2004/11/17 @ 17:30

カテゴリー: ブログ blog

コメント / トラックバック4件

Subscribe to comments with RSS.

  1. Δ PublishCharset (日本語エンコード):「EUC-JP」
    http://hitomi.s47.xrea.com/shellscript.biz/archives/2004/09/aessaphpuiaiass.html
    URL名としては無意味な文字の羅列となります(phpを含む)。「Shift_JIS」においても無意味な変換が行われます。
    「DefaultLanguage ja」が設定されていないのではないかと思います。

    (o)

    2004/11/17 at 17:56

  2. mt.cfgの設定は
    DefaultLanguage ja
    TypeKeyVersion 1.1
    ・・・
    ・・・
    となっていました。過去形である理由は、DB+PublishCharsetを先日、PostgreSQL+EUC-JP から MySQL+UTF-8 に変更しました。Xrea.comさんのサーバでは、PostgreSQLの初期化を行うと、EUC-JPに自動設定されて変更できないため、やむを得ない選択でした。

    tips

    2004/11/17 at 18:17

  3. 謎はすべて解けました。2004/09ですからそのエントリを作ったのはMT 3.11日本語版ではありませんね。
    basenameはエントリを作ったときに決まりますから、そのときに「DefaultLanguage ja」ではなかったということです。

    (o)

    2004/11/17 at 18:30

  4. いろいろご指導ありがとうございました。mt.cfgを編集し、「DefaultLanguage ja」を追加した時期は、MT 3.11日本語正式版公開前でしたが、いつ追加したか?定かではありません。しかし、問題解決できましたので、また、ご指摘いただきましたことは、旧バージョン利用者にとって重要なことですので、(注1)としてエントリに追加しました。ありがとうございました。

    tips

    2004/11/17 at 19:59


コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。