WordPressでpostnameが”-”で終わってると404エラーになる問題を解決しました

Web-log・ココログ関連,WordPress

ココログからWordPressに移行してしばらくしてから気づいた問題。

やっと、この問題を解決できました。

最初、WordPressのスクリプトを書き換えようと頑張ってみたのですが、解決の糸口が見えませんでした。

それに、WordPressのバージョンが上がるごとに、その部分を修正しなければなりません。

これは結構大変です。

そこで、発想を転換して、次の方法をとりました。

  1. postnameの末尾の"-“を削除
  2. .htaccessを修正して、末尾が"-“で終わっていたら、リダイレクト

1は、該当する記事を順番に開いて、「更新」ボタンを押して行きます。そうすると、postnameが自動的に修正され、末尾の"-“が削除されます。

2は、.htaccessに次の一行を追加しました。

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule  ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]
RewriteRule  ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
RewriteRule ^([_0-9a-zA-Z-]+)-\.html$ $1.html [L]
RewriteRule . index.php [L]

この修正を加えると、"postname-.html"が"postname.html"にリダイレクトされます。そうする事により、無事表示できる様になります。

ただ、この記述だと、"postname—–.html"もリダイレクトされてしまいます。でも、実害が無いので、このままでよい事にします。

ちなみに私は、「ダッシュボード」→「設定」→「パーマリンク設定」で、次の様に設定しています。

/%year%/%monthnum%/%postname%.html

ココログのパーマリンクと同じ構造としています。

なお、通常の方法では、"-“で終わるpostnameには設定できません。MySQLのデータベースを直接いじる必要があります。

今回は、ココログのパーマリンクと同じにするために、MySQLのデータベースを直接書き換えると言う作業をしています。

Posted by お市のかた