エントリー・アーカイブの一部が表示されない不具合のお詫び

エントリー・アーカイブの一部が表示されない不具合のお詫び

Posted at April 14,2007 1:00 AM
Tag:[Error, Information]

先日、ニュース欄にて「2007/04/07のエントリーが正常に表示されないため現在削除しています。」というお知らせを致しましたが、調査したところ、ダジャレカテゴリーのエントリー・アーカイブの直近20エントリー位が全て真っ白になる状態が数日続いておりました。

原因は、最近エントリー・アーカイブ本文下に「関連記事」という一覧を新たに掲載したのですが、その中で利用しているPHPスクリプトのエスケープ処理に不具合があったため、一覧にエスケープが必要なタイトルが表示されているとPHPが正常に処理されず、結果的に真っ白なページが表示される状態になっていました(メインページやカテゴリー・アーカイブでは問題なく表示されます)。

RSS リーダーで購読されている方でアンカーを辿ってこられた場合、直接エントリー・アーカイブにジャンプするため、そこで真っ白なページに遭遇してしまうことになります。大変ご迷惑をおかけ致しました。
現在は回復しています。関連記事一覧も正常に表示されるようになりましたが現在は削除しています。

他のサイトを訪問して、ページが 404 ではなく単に真っ白になるようであれば、そのページはPHPエラーが発生している可能性があります。特に個人サイトの場合、運営者本人がエントリー投稿後すべての関連ページを確認する可能性は低く、要するに「気がついていない状態」が少なくないのではないかと思われます。

今回のPHPエラーでページが真っ白になるという事象は、コンテンツ自体も空の head 要素と body 要素、そして一部の要素しか存在しません。
具体的には下記のようなマークアップになります。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=shift_jis"></HEAD>
<BODY></BODY></HTML>

それでいてメインページや他のアーカイブページからはリンクが設定されているので、検索エンジンからインデクシングの対象とみなされます(Sitemap も同様)。

Yahoo! 検索では404/503 エラー含め、こういったページのチェックがかなり厳しい(=SEOに影響する)ように思われます。Google Analytics を確認したところ、この不具合が発生した少し後から Yahoo! 検索からのアクセスが若干下がったように感じました。

という訳で、カスタマイズされている方は今回のように真っ白になるページがないよう気をつけましょう(自戒の念を込めて)。

関連記事
トラックバックURL


コメント

初めまして。いつもお世話になっております。
当方、Movable Type 3.34なのですが、
こちらのテンプレをカスタマイズして利用させていただいております。

ずっと、何事もなく動いていたのですが、
1週間ほど前に、突然トップページとアーカイブとエントリーの一部が真っ白になってしまいまして…
毎日四苦八苦しておりましたところ、
こちらのエントリーに辿り着きました。

記事を拝見して納得してしまいました。phpエラーなのですね。
原因が分かって、ほっとしました。

現在、こちらの記事と全く同じ状況で、真っ白なページのソースも同じです。
でも、どの部分を修正して良いのか分からないので、
1行ずつ消してみたり、また書き加えてみたり…と、色々試しております。
(ページ分割とカテゴリーと月別の合計数を表示させるプラグインを埋め込んであります。)
ですが、どうにも煮詰まってしまいました。

>PHPスクリプトのエスケープ処理に不具合があったため、一覧にエスケープが必要なタイトルが表示されているとPHPが正常に処理されず…

とありますが、
エスケープが必要なタイトルとは何ですか?

お忙しいこととは存じておりますが、どうかお知恵をお貸しください。
よろしくお願いいたします。

[1] Posted by りお : October 23, 2007 4:48 PM

>りおさん
はじめまして。
ご質問の件ですが、特定のページのみが表示されないのであれば、記事タイトルまたは記事本文に原因となる文字列が含まれている可能性がありますので、記事の内容をどこかに保存しておいて、ごっそり削除して再構築してみてください。正常に表示されれば、削除した内容を少しずつ元に戻して再構築し、表示されなくなれば、追加した部分をまたこまかく分割して…ということを繰り返せばうまく切り分けられると思います。

「エスケープが必要なタイトル」は
http://www.scollabo.com/banban/php/php_07.html
等に掲載されています。

もし原因がお分かりにならないようでしたら、生成した後のページ(ブラウザで表示される前のファイル)を圧縮してメールにてお送りください。
それではよろしくお願い致します。

[2] Posted by yujiro logo : October 25, 2007 9:59 AM

yujiroさん、お返事ありがとうございます。
ご指摘のように、最近のエントリーを消してみたら見事に表示されました!
エラーの原因は、phpの事をメモしたエントリーでした。
<?php・・の「<」を直していなかったのです(汗汗汗

表示されなくなった日に、テンプレとプラグインをいじっていたものですから、
ずっと、それが原因だと思ってテンプレを見直しておりました。
イチから作り直ししないといけないかも…と半分諦めていたので、とても嬉しいです。
丁寧に教えてくださって、どうもありがとうございました。

あの…もうひとつ伺わせてください。
よくネット上で見かけるのが、「MTは、ある程度の上限を超えると不安定になる」という事なのですが、
どうなのでしょう???
現在、エントリー数が1800程あり、再構築もかなり時間が掛かるようになってきました。
やはり、ある程度のところでお引越しを考えた方がいいのでしょうか?

[3] Posted by りお : October 26, 2007 9:11 AM

>りおさん
こんばんは。
ご連絡ありがとうございました。
無事に直ったようで良かったです。
また、ご質問の件ですが、再構築時間を短縮したい場合はダイナミックパブリッシングという手もあります。
不安定(=再構築に時間がかかる等)になるのは、MTよりもサーバの性能に依存する問題ではないかと思います。
それではよろしくお願い致します。

[4] Posted by yujiro logo : October 28, 2007 12:04 AM
コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)