WordPressの404問題完全解決

2013年6月16日Web-log・ココログ関連,WordPress

このブログは、ココログから引っ越して来ています。その時、URLがなるべくココログと共通になる様に、postnameの部分を同じにしています。

例えば、次のURLの場合、

の場合、赤字部分を"oichinote"に書き換える事で、ココログのURLから移動できる様になっています。

ところが、次の問題が起きており、困っていました。

その解決をしたのが次の記事です。

postnameの末尾の"-“を取り除くように、.htaccessを書き換えました。

ところが、まだ404エラーを起こすページを見つけてしまったのです。

色々調べてみると、postnameが次の事場合にエラーになる様です。

  • “—ABC" (先頭にハイフン)
  • “AB–C" (ハイフン2個)
  • “ABC-" (末尾にハイフン)

postnameが"-“で始まっていたり終わっていたりする場合と、複数の"-“が入っている場合です。

この様なpostnameは、普通の方法では作れません。SQLを使って直接データベースを変更する必要があります。

いったいどうすれば404エラーを解消できるのでしょうか? やはり、前回と同じ方法で、postnameを書き換えて.htaccessを設定しなければならないのか?!

どういう条件で404エラーになるかがわかったので、この条件のpostnameになっている記事から、余分な"-“を取り除きました。

「はぁ〜、次は.htaccessの書き換えか…」と思いつつ、WordPressにとって不都合な"-“が入ったままのURLでアクセスすると、ちゃんと表示されるじゃないですか!?

どうも、WordPressは、URL(postname)から余分な"-“を取り除く処理をした後で、そのpostnameの記事を探しに行く様です。

その為、記事自体が正しいpostnameになっていれば、URLに余分な"-“があってもアクセス可能です。

先ほどの例で説明すると、postnameが"ABC"になっていれば、次のどちらのURLでもアクセス可能です。

  • “—ABC" (WordPressにより、先頭のハイフンが消され、"ABC"にアクセスされる)
  • “ABC-" (WordPressにより、末尾のハイフンが消され、"ABC"にアクセスされる)

postnameを"AB-C"としておけば、

  • “AB–C" (ハイフン2個が、WordPressにより1個のハイフンに変更され、"AB-C"にアクセスされる)

でのアクセスが可能です。

どちらも、WordPress標準の.htaccessを書き換えせずにです。

この方法に行き着くまでに、非常に苦労しました。

実は、もう一つ問題が残っているのです。WordPressは、同じpostnameの記事を許さない様です。

カスタムパーマリンクで、URLが違っているので、それぞれの記事にアクセスできるのですが、同じpostnameを持つ記事を編集しようとすると、postnameが強制的に変更されてしまいます。

これはまずい…。次の課題です。まあ、書き変わった後に、再度SQLで修正すれば良いだけなのですが。

Posted by お市のかた