Top PageMovable Type運営記PHPファイルの先頭に「-」があると500エラー

PHPファイルの先頭に「-」があると500エラー

Check  このエントリーをはてなブックマークに追加   

さくらインターネットのPHPをバージョン5にアップデートしたからなのか、その以前からなのか、発生時期は分かりませんが、Movable Typeで運営しているブログの一部のエントリーが 500 Internal Server Error で閲覧できなくなっていました。

Internal Server Errorの原因

ファイル名の先頭が -(ハイフン) になっているエントリーのみがエラーを返します。下記サイトによると、PHPの仕様上、ファイル名の先頭にハイフンは使用してはダメとのこと。

ファイル名の先頭に「- (ハイフン)」で「Internal Server Error」(その3)

とはいえ、この現象はある特定条件が重なったときに起こることも分かりました。

 ・ アーカイブオプションで、ファイルの拡張子を「php」にしている
 ・ 「ブログ記事」テンプレートのアーカイブマッピングパスが初期設定のまま
     例 ) yyyy/mm/entry-basename.php
 ・ エントリーのタイトル内に、「半角スペース+英数字」という組合せがある
 ・ (サーバーがさくらインターネットである?)

対策方法

今回はアーカイブマッピングパスを変更することで対処しました。Movable Typeが管理するエントリー毎のID(MTEntryID)をファイル名にします。これなら今後エントリーにどんな変更を加えても、ファイル名が変更されることはありません。

entry/<$MTEntryID pad="1"$>.php

ファイル名エラー


ただし、全ブログ記事のファイル名が代わってしまうため、

 ・ YahooやGoogleへのインデックスがリセットされる
 ・ エントリーに個別リンクされてる場合、URL変更が必要

というデメリットがあります。が、今回エラーを出しているサイトは個人ブログがメインなので割り切りました。ファイル名を変更せず、サーバーやPHP側の設定を変更する方法も調べましたが、力及ばず見つけられませんでした。

前の記事 | トップページ | 次の記事 | Yahoo!ブックマークに登録 Google Bookmarkに登録 はてなブックマークに登録 Livedoorクリップに登録

Check  このエントリーをはてなブックマークに追加   

Facebookでコメントする

この記事を読んだ人はこんな記事も読んでます

【取材】EZニュースフラッシュ増刊号

AndroidからMovable Type投稿

クローラのせいで重くなった MT4i の対策

Movable Typeコンテスト参加中

LCM英語化スタート

さくらにResearch Artisan Liteインストール

さくらのMySQL4→5 バージョンアップ手順

PHPファイルの先頭に「-」があると500エラー

PHP4→5でincludeが使えなくなったときは

e-Taxで確定申告 注意点とお得度