WordPress 3.0で複数ページ構成の記事に不具合
環境依存は強いと思いますが、複数ページ構成の記事で不具合が出ましたので、覚え書きです。
WordPressで運用している当サイトですが、先日3.0にアップデートしたタイミングから複数ページ構成の記事の2ページ目以降にアクセスすると、1ページ目に301リダイレクトされてしまうという現象が発生していました。
WordPress 3.0.4で本不具合が修正されていることを確認しました。
(2011年1月追記)
httpヘッダを見ると301リダイレクトであることから、まずは念のために.htaccessをチェック。
当然のことながら以前と変わりはなく、リダイレクトの記述もありません。
次に、リダイレクトの挙動であることから、ページテンプレートではなく、プラグインを疑いました。
WordPress 3.0を新たに1つインストールし、全てのプラグインをコピーして確認しても特に問題は発生しません。
ここまで来るとほぼお手上げ状態なのですが、再構築するのも面倒だったため、WordPressのコアモジュールから301リダイレクトをしている箇所をピックアップし、どこで引っかかっているのかを探します。
今回の該当箇所は、wp-include/canonical.phpであることがわかりました。
そこで、先ほど構築した新たなWordPress 3.0の環境からcanonical.phpを取り出し、不具合が発生している環境へ上書き。
これでも状況は改善しません。
中身のソースコードを解析し、該当箇所を書き換えることで回避することも可能だったのですが、別のブログに使っていたWordPress 2.8.6のcanonical.phpを取り出して上書きすることで直すことができました。
他のモジュールとの関連(一部バージョンアップされていないモジュールがあるなど)がいろいろとありそうですが、現在のところ、これでまともに動作しています。
ただし、wp_headerのcanonicalをお使いの場合は、もしかしたら、その部分が旧バージョンのままの挙動となってしまうかもしれませんので、ご注意ください。
根本原因についてはまだ不明ですが、解析する気力があったら原因と解決策を追記いたします。