2006年5月24日

コメント投稿で「エントリーIDが見つかりません」と表示される不具合について

May 24,2006 1:15 AM
Tag:[, , ]
Permalink

Movable Type のエントリー・アーカイブからのコメント確認およびコメント投稿で、下記のような「エントリーIDが見つかりません」というエラーが表示されるケースがあります。

エントリーIDが見つかりません

この問題は、mt-config.cgi の CGIPathと、管理画面で設定する「サイトURL」のドメインが異なっている場合にこの現象が発生する可能性があり、XREAでの運用で独自ドメインを取得した後、「サイトURL」だけに独自ドメインを設定をしたケースが該当します。

この場合、CGIPath はXREAドメインのままです。この状態でコメント投稿を実行すると、コメント投稿用CGI mt-comments.cgi のURLには CGIPath、つまりXREAドメインが使用され、その後XREAドメインから独自ドメインへのリダイレクトが発生します。このリダイレクトで mt-comments.cgi の query として付与されたエントリーIDが欠落してしまい、実際に Movable Type で処理される時には「エントリーIDが見つからない」という状態になってしまうようです(後述の参考サイトより一部引用)。

「エントリーIDが見つかりません」で google 検索しても情報は少ないようですが、バージョン 3.2 以前は「No entry_id」というエラーが表示されており、下記のサイトに情報がありました。

実は、昨日エントリーした検索結果画面で検索文字列が文字化けする不具合を解消すると全く同じ原因で、CGIPath のドメインを、サイトURLのドメイン、つまり取得した独自ドメインと一致させることで解消します。
具体的には、mt-config.cgi の CGIPath に記述しているURLのドメインを、管理メニューの「設定」→「公開」→「サイトURL」に記述されているドメインに修正します。ただし mt.cgi と index.html が異なるディレクトリの場合、mt.cgi までのパスをドメインの後ろに設定する必要がありますのでご注意ください。

修正が完了したら mt-config.cgi を元のディレクトリにアップロードし、エントリー・アーカイブを再構築してください。再構築しないとエントリー・アーカイブに記述されているコメント投稿用CGI mt-comments.cgi のURL が新しい URL に書き変わりません。

余談ですが、検索結果画面で検索文字列が文字化けする不具合を解消するで質問を頂いた当初、原因が全く分からず、情報に至りそうな検索文字列を片っ端から google に打ち込んでも1件もヒットしませんでした(笑)。
そんな訳で半ば諦めていたのですが、ふとその方のサイトでコメントを投稿(確認)してみると「エントリーIDが見つかりません」というエラーが発生しました。それをきっかけに上記の情報にたどり着き、検索実行用URL(これも CGIPath を使用しています)のドメインを独自ドメインに書き換えて実行したところ正常に表示され、無事解決に至ったという訳です。

つまり、本エントリーの不具合を解消することで検索結果画面の不具合も解消してしまうため、検索結果画面の問題がネットで話題にあがることがなかったのではないかと推測します。

2006.07.01 追記
mt-config.cgi 修正後のエントリー・アーカイブの再構築について追記しました。

Comments [6] | Trackbacks [5]
2006年5月23日

検索結果画面で検索文字列が文字化けする不具合を解消する

検索結果画面で検索文字列が文字化けするMovable Type で「検索フォームに日本語を入力して検索すると、入力した文字が文字化けして表示される」というご質問を頂きました。確認したところ、例えば「コンピュータ」という文字列を入力すると、検索結果画面はスクリーンショットのような表示になりました(画像をクリックすると拡大表示します)。

お分かりの通り、入力した検索文字列がURLエンコードされたままの状態で処理・表示されてしまうため、エントリーに含まれる検索文字列であっても正常に検索することができず、「ページはみつかりません」という結果になってしまいます。

この問題は CGIPath のドメインを、サイトURLのドメインと一致させることで解消するようです。具体的には、mt-config.cgi の CGIPath に記述しているURLのドメインを、管理メニューの「設定」→「公開」→サイトURLに記述されているドメインに修正します。ただし mt.cgi と index.html が異なるディレクトリの場合、mt.cgi までのパスをドメインの後ろに設定する必要がありますのでご注意ください。

なお試験サイトで CGIPath とサイトURLで異なるドメインを設定してみましたが、正常に動作しました。したがって、CGIPath のドメインからサイトURLのドメインへリダイレクトを設定しているような条件の下でのみ、この問題が発生する(可能性がある)のではないかと考えます。

Comments [8] | Trackbacks [0]
2006年5月13日

エントリー・アーカイブファイル名の不具合を解消する

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 追記
拡張子の表記を修正し、データフォーマットを追記しました。

Comments [24] | Trackbacks [6]
2006年5月 4日

コメント・プレビューの JavaScript エラーを解消する

May 4,2006 1:55 AM
Tag:[, , ]
Permalink

デフォルトテンプレートのコメント・プレビュー画面ではJavaScript エラーが発生します。ご質問を頂きましたのでこれを解消する方法をご紹介します。

根本的な問題はデフォルトテンプレートのコメント・プレビューに「情報を保存する?」のチェックボックスが存在しないことです。ここではチェックボックスを追加せずにエラーを解消する方法と、チェックボックス自体を追加してエラーを解消する2つの方法を記します。3項はいずれの場合も実施してください。

1.「情報を保存する?」をコメント・プレビューに追加しない

現状のフォームのままでエラーのみ解消したい場合は、下記の 1.1 および 1.2 を実施してください。

1.1 インデックステンプレート・JavaScript の修正

デフォルトテンプレートのコメント・プレビュー画面を開いた時、IEの場合はステータスバーに「ページでエラーが発生しました」というメッセージが表示され、左下のアイコンをクリックすると

'document.comments_form.bakecookie'は Null またはオブジェクトではありません

Firefox の場合は[ツール]-[JavaScriptコンソール]を開くと

document.comments_form.bakecookie has no properties

という JavaScript エラーが発生します。
これはコメントプレビューのHTMLに「情報を保存する?」というチェックボックスが存在しないにもかかわらず、mt-site.js で document.comments_form.bakecookie を処理しようとするためです。

これを解消するためには、インデックステンプレートの「JavaScript(mt-site.js)」に下記の青色部分を追加します(計2行ありますのでご注意ください)。

function individualArchivesOnLoad(commenter_name) {
        :
      (中略)
        :
    if (document.comments_form) {
        if (document.comments_form.email != undefined &&
            (mtcmtmail = getCookie("mtcmtmail")))
            document.comments_form.email.value = mtcmtmail;
        if (document.comments_form.author != undefined &&
            (mtcmtauth = getCookie("mtcmtauth")))
            document.comments_form.author.value = mtcmtauth;
        if (document.comments_form.url != undefined && 
            (mtcmthome = getCookie("mtcmthome")))
            document.comments_form.url.value = mtcmthome;
        if (document.comments_form.bakecookie) {
        if (mtcmtauth || mtcmthome) {
            document.comments_form.bakecookie.checked = true;
        } else {
            document.comments_form.bakecookie.checked = false;
        }
        }
    }
}

1.2 コメント・プレビューテンプレートの修正

これはコメントプレビュー画面から投稿した時に発生する JavaScript エラーです。IEでは分かりませんが、Firefox の JavaScript コンソールでは

this.bakecookie has no properties

というエラーが表示されます。これは投稿時に form 要素に記述された onsubmit 属性で this.bakecookie.checked という判定が実行されるためです。
これを解消するためには、コメントプレビューテンプレートの下記の赤色部分を削除します。

<form method="post" action="<$MTCGIPath$><$MTCommentScript$>" name="comments_form" onsubmit="if (this.bakecookie.checked) rememberMe(this)">

2.「情報を保存する?」をコメント・プレビューに追加する

コメント・プレビューテンプレートに、エントリー・アーカイブにあるチェックボックス(青色)を、下記のようにURLの下に

      :
<p>
   <label for="comment-url">URL: </label>
   <input id="comment-url" name="url" size="30" value="<$MTCommentPreviewURL$>" />
</p>
<p>
   <label for="comment-bake-cookie"><input type="checkbox"
      id="comment-bake-cookie" name="bakecookie" onclick="if (!this.checked) forgetMe(document.comments_form)" value="1" />
      この情報を登録しますか?</label>
</p>
      :

となるように追加してください。エラーは発生しなくなりますが本来の動作は未確認ですのでご容赦ください。

3.コメント・プレビューテンプレートの修正(commenter_name.js の削除)

コメント・プレビューテンプレートのヘッダ部分に記述されている

<script type="text/javascript" src="<MTStaticWebPath>js/commenter_name.js"></script>

は不要ですので削除してください。

この行に記述されている commenter_name.js というファイルは、英語版の初期β版にはインストールパッケージに含まれていましたが、それ以降は含まれていません、つまりファイル自体が存在しません。
なおβ版で存在していた commenter_name.js の内容は、現在 mt-site.js に包含されています。

この行が残っていると、コメント・プレビュー画面で JavaScript エラーが発生する可能性があります。
「可能性がある」というのは、該当のファイルに本当にアクセスできない場合はエラーは発生しませんが、レンタルサーバで404エラーのファイルにリダイレクトする設定になっていると、表示されたHTMLファイルを不正な JavaScript として評価してしまい、IEでは

構文エラーです。

というエラーが表示されます。

2006.05.06 追記
3項を追加しました。

Comments [10] | Trackbacks [2]
Now loading...
ギターに入った猫
掲載広告募集
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

AMN
Categories
Monthly Archives
2020年
2019年
2018年
2017年
2016年
2015年
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
2005年
2004年
2003年
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
Powered by
Movable Type 6.0.3