WordPressでは、ブログ記事毎に設定されるURLの「パーマリンク」という設定があります。「基本」や「日付と投稿名」などいくつか設定できるようですが、「URLから記事の内容を推測しやすい」などの理由から「投稿名」にすることをおすすめしている解説サイトが多い印象です。
この設定を変更すると、これまでに投稿した記事のURLが一括で変更されてしまいます。「URLが変更されると、Google検索からの評価がリセットされてしまう」とのこと、設定するなら最初が肝心、私のサイトも「投稿名」に設定してみました。ところが新規の記事を投稿しようとすると・・・
「返答が正しいjsonレスポンスではありません」
と言われて記事の投稿ができなくなりました。パーマリンクの設定が「基本」のときにはそのようなことがなかったのですが・・・かと言って「基本」に戻してしまうとURLが「?p1」だとか「?p21」になるのは歓迎できません。
調べてみると、パーマリンクの設定を変更するとドキュメント・ルートにある.htaccessが自動的に編集されることが判りました。「基本」以外に設定すると、次のように追記されるようです。
# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
何らかの理由で「基本」以外に設定したのに上記のRewriteRuleが追記されないことで、記事が投稿できなくなるトラブルがあるようです。しかし、私の環境の場合はきちんと追記されています。
この動作を見てやっと思い出しました。そもそも.htaccessで設定することが基本的には推奨されていないと思っているので、私の環境では.htaccessによるリダイレクトなどの設定を無効にしていました。
WordPressを動かしているいるバーチャル・ホストに限りこだわるのを諦め、.htaccessによるリダイレクトなどの設定を有効するようことにして、やっと新規記事が投稿できるようになりました。具体的には/etc/apache2/sites-availableの中にあるconfファイルの中で、<Directory …>の中に次の記述を追加しました。
AllowOverride All
こうしてやっと初めての投稿ができました。
