WordPressでpostnameが”-”で終わってると404エラーになる問題を解決しました
ココログからWordPressに移行してしばらくしてから気づいた問題。
やっと、この問題を解決できました。
最初、WordPressのスクリプトを書き換えようと頑張ってみたのですが、解決の糸口が見えませんでした。
それに、WordPressのバージョンが上がるごとに、その部分を修正しなければなりません。
これは結構大変です。
そこで、発想を転換して、次の方法をとりました。
- postnameの末尾の"-“を削除
- .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のデータベースを直接書き換えると言う作業をしています。
ディスカッション
コメント一覧
まだ、コメントがありません