エントリー・アーカイブファイル名の不具合を解消する
Movable Type 日本語版でのエントリー・アーカイブファイル名はデフォルトの状態で entry_basename というものが使われます。これはタイトルの先頭からファイル名(最大30文字)を生成し、エントリータイトルに半角が使用されていればそのまま反映されますが、すべて日本語の場合は、post.html、post_1.html、post_2.html …という具合にファイル名が生成されます。
この entry_basename は、ファイル名長以外を制御することができないため、どのようなファイル名になるかはシステム依存となります。簡単な動作確認をした限りでは一度公開したエントリーを削除して、その後の新エントリーには削除したファイル名が付与されました(エントリータイトルが全て日本語の場合)。また数名の方から、異なるエントリーに同一ファイル名が付与されるという不具合に関する質問も頂いています(原因不明)。
さらにバックアップからエントリーを復旧する場合、ファイル名はバックアップから取得しません。つまりエントリー投稿時と同様のロジックでファイル名を生成する訳なので、バックアップ前と同一のファイル名が付与されない可能性もあります。
つまり、エントリー・アーカイブファイル名には entry_basename を利用せず、タイムスタンプ等のエントリー固有の値を利用することを推奨します。
下記にエントリー投稿時間をエントリーファイル名に使用する設定をご紹介します。
- 管理画面の「設定」→「公開」をクリック
- ページ下方にある「アーカイブ・マッピング」の項目の「エントリー・アーカイブ」の「出力フォーマット」のプルダウンメニューから一番下の「カスタマイズする」を選択
- 入力フィールドに下記を入力
%y/%m/%d%h%n%s%x
- 保存して再構築
データフォーマットは下記の対応になっています。途中の "/" はディレクトリです。
- %y:年
- %m:月
- %d:日
- %h:時
- %n:分
- %s:秒
- %x:拡張子(「設定」→「公開」→「アーカイブの拡張子」で設定したもの)
拡張子を個別に設定する場合は最後の拡張子 %x を .php 等に書き換えてください。
2006.05.15 追記
拡張子の表記を修正し、データフォーマットを追記しました。
- MovableTypeプラグインの独自CGIをNginxに対応させる方法
- Movable Type 5で「Got an error: Can't use 'defined(%hash)' (Maybe you should just omit the defined()?)」というエラーになる場合の対処
- 旧バージョンのMTでPerl5.26(Perl5.24以降)に対応する方法
- MT6.2のファイルアップロードで「Undefined subroutine &POSIX::strftime」になる問題の対処
- Movable Typeのファイルアップロードで「アップロードしたファイルは大きすぎます。」というエラーになる場合の対処
- Movable Typeのパスワード変更で「URLが不正です。」というエラーなる件についての対処
- Movable Typeで「Cannot find column 'blogs' for class 'MT::Blog'」となる場合の対処
- Movable TypeでMTPageNextタグが効かなくなる不具合について
- Movable Typeの復元で「Request-URI Too Large」になるときの対処
- サーバ故障と「Connection error: Too many connections」エラーおよびMySQLテーブル破損について
- Movable Typeでエラー発生箇所を特定する方法
- IE9でMovable Typeを利用する方法
- MTIfタグにtagモディファイアを利用する場合の注意事項
- Movable Type 5のブログの設定で「Can't call method "label" on unblessed reference」が発生する問題について
- Movable Type 5.03へのアップグレードで再構築時に「Script Error」が発生する件について(つづき)
≫ エントリー投稿時間をエントリーファイル名にする from いろんなことが起こる
小粋空間さんのエントリー・アーカイブファイル名の不具合を解消するに書かれている不... [続きを読む]
≫ 3 カラムレイアウト from 無料ネット生活友の会?ブログ編
2 カラムレイアウトから、3 カラムレイアウトに、テンプレートの入れ替えをしまし... [続きを読む]
≫ 構築メモ from Lowspec
アーカイブファイル名がデフォルトのままだと、構築されたファイル名に半角が混ざった... [続きを読む]
≫ アーカイブファイル名を変更する from Lowspec
アーカイブファイル名をデフォルトのままにしておくと、タイトルに半角が混ざった時に... [続きを読む]
≫ ブログのエントリーアーカイブ名変更でリンク切れ解消! from モテリーマンへの道
昨年「らのねっと」の管理サーバ移行に伴いこのブログサイトも移行したのですが、それ... [続きを読む]
≫ MT4.32:投稿時間からエントリー・アーカイブファイル名を生成する from ポロのある日々(6NAEE POLO)
MT4.32のデフォルトでは、エントリー・アーカイブファイル名(ブログ記事のUR... [続きを読む]
拡張子が .html か .php か云々は単に %x と書けば済むことかと思いまーす \(^o^)/
>shitさん
こんばんは。
仰せの通りです。
ご指摘ありがとうございました!
この件でずっと悩んでいました。本当に助かりました。
>fukaoさん
こんにちは。
ご連絡ありがとうございました。
お役にたてたようで良かったです。
ではでは!
はじめまして。
ブログ引っ越しの際にエクスポート・インポートしたらエントリー・ファイル名がずれて困っていました。
こちらで紹介されている方法を参考にさせていただき、対応したいと思います。
本当に助かりました。
>らのさん
はじめまして。
記事参照&エントリーありがとうございました。
お役に立てたようで良かったです。
ではでは!
はじめまして、minamiと申します。
いつもためになる情報をありがとうございます。
活用させていただいており、助けられています。
ありがとうございます。
ちょっとだけ関連しているかなと思い質問なのですが、カテゴリーとエントリー出力ファイル名を日本語にする方法はありますでしょうか?
イメージ的には、ウィキペディアのカテゴリーフォルダ名みたいな感じにしたいのですが、
環境設定>>カテゴリー>>出力ファイル名に日本語エンコードした"%??"と入力しても"%"の部分が自動で削除されてうまくいきません。
エントリー・アーカイブの方も同じです。
これは別途プラグインなどを作成しなくてはいけないのでしょうか?
それとも、モジュールの改造をしなくてはいけないのでしょうか?
方法を知っている方、ご教授いただければ嬉しいです。
はじめまして。
Movable Type 4.01を使っています。
上記の方法でファイル名を「16194837.php」とする事が出来たのですが、パーマリンクが「post.php」のまま直ってくれません。
「ブログ記事の編集」上でも「出力ファイル名 post」となっています。
解決方法が分からないのですが、
どのようにしたらいいかご教授いただけないでしょうか。
よろしくお願いします。
>takafumiさん
はじめまして。
ご質問の件ですが、ファイル名は「デザイン」→「テンプレート」→「アーカイブテンプレート」→「ブログ記事」のアーカイブマッピング部分を変更されましたでしょうか。
また「パーマリンクが「post.php」のままになっているページ」の再構築はされましたでしょうか。
なお、この記事はMT3の時のもので、MT4では解消しています。説明不足で申し訳ありません。
それではよろしくお願い致します。
>yujiroさん
回答ありがとうございます。
>「ブログ記事」のアーカイブマッピング部分を変更されましたでしょうか。
はい「アーカイブマッピング」→「カスタム」→「%y/%m/%d%h%n%s%x」としています。新たに「ブログ記事」を作成すると、ファイル名は「16194837.php」で作成されるのですが、パーマリンクは「post_1.php」といったリンクで作られてしまい、リンクが切れてしまっています。
>なお、この記事はMT3の時のもので、MT4では解消しています。
MT3をさわった事がないのでよく分かっていないのですが、「出力ファイル名」で直すということなのでしょうか。
>takafumiさん
こんにちは。
頂いた内容より推測すると、
「ブログ記事」テンプレートのアーカイブマッピングを誤って2つ作っている
「ブログ記事」テンプレート自体を2つ作っている
のいずれかではないでしょうか?
質問を換えると、「ブログ記事」テンプレートの「アーカイブマッピング」の「種類」欄に「ブログ記事」が表示されていると思いますが、そこにチェックボックスが表示されていないでしょうか。
MT3の話については、「この記事はMT3の時の不具合を書いているので、MT4ではこの不具合は改善されているので、対処を行う必要はありません」ということを述べています。
それではよろしくお願い致します。
いつも参考にさせて頂いています。ありがとうございます。
少し初歩的なことなのですが、どうしてもわからなかったので
質問させていただきます。すみません。
MT4最新版を使用しています。
当該記事の設定をしまして、
ftp上でも、2008/01/XXXXXX.htmlというファイルがあり、
(拡張子は都合で.htmlのままにしております。)
パーマリンクもうまくいっています。
しかし「ブログ記事の編集」上では出力ファイル名:postのままなのですが、
これはそういうものなのでしょうか?
新しく記事を作成したら、post_1の表記になりましたが、
こちらも表ではうまくいっています。
すみませんがご教授下さい。
>ashさん
こんばんは。
ご質問の件ですが、ブログ記事の出力ファイル名は、ブログ記事タイトルからMTが自動生成するようになっています。タイトルに半角文字がない場合は、post、post_1、post_2…という風に付与されます。
MT3ではブログ記事データのエクスポート→インポートを行うとファイル名が変わってしまうという不具合がありましたが、MT4以降はエクスポート→インポートを行ってもファイル名が変わることはありませんので、心配する必要はありません。
それではよろしくお願い致します。
やはり不具合が起こりまして、
新規記事投稿時に
というファイルが生成されているにも関わらず、
当該記事へのリンク先が、全て
2008/01/post.html
となって、リンク切れを起こしてしまいます。
(手動で出力ファイル名を入れると、リンクは正常になります。)
私はアーカイブマッピングの指定をすれば、
全ての記事が自動的に「日付-時分秒」の記載になると思っていたのですが・・・。
そもそも「出力ファイル名」=「アーカイブマッピング」ではないのでしょうか?
>ashさん
こんばんは。
ご質問の件ですが、「出力ファイル名」=「アーカイブマッピング」ではありません。厳密には、「出力ファイル名」は「アーカイブマッピング」でマッピングされたアーカイブ種別に設定されているパスの一部分になります。
また、上記の内容では現在の状況が不明なため、サイトのURLをご連絡頂けますでしょうか。あるいは、どこかの設定(アーカイブマッピング等)を変更されたのであれば、その具体的な設定内容をご連絡ください。
それではよろしくお願い致します。
度々申し訳ありません。ご説明ありがとうございます。
出力ファイル名とアーカイブマッピングの違いの件、了解しました。
アーカイブマッピングが「%y/%m/%d-%h%n%s%x」の場合、
もし以下の題名と日付で投稿したら、
題名:Movabletypeについて 日付・時間:2008年1月21日 18:00:00
2008/01/21-180000_movabletype.html
になるということですよね?
もし、題名に英語が含まれていなかったら、
2008/01/21-180000.htmlになるんでしょうか?
仕事の関係でサイトのURLは載せられないため、
設定事項を書かせていただきます。
新規ブログをMT4にて作成し、
デザイン→テンプレート→アーカイブテンプレート→ウェブ記事
のアーカイブマッピングに「%y/%m/%d-%h%n%s%x」と設定しました。
新規投稿をすると、サーバ上に当該のファイル名のファイルは作成され、indexに記事も掲載されますが、
ブログの当該記事の本文へのリンクURLは、全て「post.html」となり、リンク切れとなります。
少し勘違いをしてたかもしれないのですが、よく読みましたら上記事は既存のブログについての記述でしたね。
やはり新規投稿の場合は、出力ファイル名を入れないといけないんですかね(>_<)
>ashさん
こんにちは。
ご質問の件ですが、%y/%m/%d-%h%n%s%x に設定されたのであれば、パスに題名は含まれません(英語が含まれていても、含まれていなくても)。
#コメントの「ウェブ記事」は「ブログ記事」と読み替えました
また、新規投稿で出力ファイル名を設定する必要は、基本的にありません。これはアーカイブマッピングの「パス」で全て自動的にファイル名を生成するためです。
以下、気になる点をいくつか挙げておきます。
- 「ブログ記事」のアーカイブマッピングはひとつだけでしょうか。二つある場合はどちらか一方を削除してください。
- 「新規投稿をすると、サーバ上に当該のファイル名のファイルは作成され、indexに記事も掲載されますが、」とありますが、そのファイル名はどうなってますでしょうか。
- 「ブログの当該記事の本文へのリンクURL」を表示しているページのテンプレートは、デフォルトテンプレートのままでしょうか?何かカスタマイズされていないでしょうか。
私の方で、頂いた情報で分かるのは上記までです。
どうしてもうまくいかないのであれば、MTを再インストールされることをお勧めします。
それではよろしくお願い致します。
はじめまして(^-^)
いつも参考にさせていただいております。
私も同じようなところで?躓いている模様で…
アーカイブマッピングを、
%y/%m/%d_%h%n%s%x …としています。
インデックスからブログ記事へのパーマリンクは正常に、
マッピング通りにリンクされております。
この設定状態で新規投稿を行った場合、新規投稿時の出力ファイル名にも、
このマッピングが反映される、という解釈で良いのでしょうか?
当方の現状では、新規投稿を行うと、
インデックスからのパーマリンクは、マッピング通りにリンクされるのですが、
投稿したファイル名の方は「post-X」となっております。
新規投稿で下書きした後に、公開の都度、出力ファイル名を修正している状態です。
いろいろ検索して調べておりますが、探している答えが見つからず、
思わず書き込みさせていただきました…
引き続き調べてみます…
>やすこさん
>ashさん
>takafumiさん
こんばんは。
同じ質問を頂いて気がつきました。
おそらく皆さんお使いのバージョンは4.01だと思いますが、MTのバグと思われます。
私の環境では発生しなかったので、気がつくのが遅れて申し訳ありませんでした。
もうすぐ4.1がリリースされるので、そちらにバージョンアップされることをお勧めします。
お役に立てず申し訳ありません。
yujiroさん、お忙しい中お返事ありがとうございました(^-^)
ご指摘の通り、4.01を使用しております。
4.1がリリースされ次第、バージョンアップしてみます(^-^)
お返事いただいて、大変助かりました。
ありがとうございます(^-^)/
お忙しい中コメントいただきありがとうございます。
仕事がたてこんできたので、確認が遅れましてすみません!
バグということで納得しました。4.1のリリースを待とうと思います。
>ashさん
こんにちは。
ご連絡ありがとうございます。
なお4.1はすでにリリースされていますのでお試しください。
http://www.koikikukan.com/archives/2008/01/25-000020.php
それではよろしくお願い致します。
4.01の時にPHP化に失敗していましたが、
4.01⇒4.1にバージョンアップ後、PHP化に成功しました。
yujiroさんのコメントで助かりました。ありがとうございます!!
4.01の時に作成したブログは問題が解決しないため、
新しくブログを作って、成功しました。
>こんちさん
こんばんは。
ご連絡ありがとうございました。
PHP化、うまくできたようで良かったです。
ではでは!