wordpressのプラグインJetpackで連携エラーになった場合の対処法です。
エラー内容
Jetpackをインストールしてすぐに、連携を促す画面から「Connect Jetpack」もしくは「Jetpackと連携」ボタンを押すと、以下のようなエラーが表示されて、連携に失敗してしまいました。
または
対処内容
そんな場合は .htaccessによるxmlrpc.phpのアクセス禁止が影響していることが考えられます。
もし、.htaccess内で以下の様な記述があれば
1 2 3 4 |
<Files "xmlrpc.php"> order allow,deny deny from all </Files> |
一旦、以下の様にコメントアウトして
1 2 3 4 |
#<Files "xmlrpc.php"> #order allow,deny #deny from all #</Files> |
Jetpackの連携後に速やかに元に戻しましょう。
もし、.htaccessの編集をやった気がするけど忘れちゃった、と言う方はこの後の対処手順に手順の詳細を記載しましたので、そちらを見ながら実施してみてください。
※そんなことやった記憶すらが無いという方は、レンタルサーバの設定でxmlrcp.phpの設定が出来る場合がある様なので、お使いのレンタルサーバの設定を確認してみてください。
対処手順
1. xmlrpc.phpがアクセス禁止になっているかの確認
まずは、xmlrpc.phpがアクセス禁止になっているか確認するために、ご自分のサイトのURLに/xmlrpc.phpをつけてアクセスしてみてください。
例) サイトのURLがxxxx.comの場合は
http://xxxx.com/xmlrpc.php になります。
アクセス禁止になっていると、ブラウザによって動作が異なりますが、Forbiddenやアクセス不可などの、403エラーが表示されます。
(もし、許可IPの設定などで自分端末のIPだけ許可している場合などは、上記のエラーにならない場合がありますので、一旦次のステップに進んでみてください。)
2. .htaccessの存在確認
sshでログイン、もしくはFTPでwordpressのインストールフォルダで確認します。(xmlrpc.phpがあるのと同じフォルダです。)
sshでログインした場合は以下のコマンドで確認できます。
1 |
ls -la |
FTPの場合は .htaccessは隠しファイルなので見えない設定になっているかもしれません。
その場合の手順が以下のサイトに詳しく紹介されていましたので確認してみてください。
よく使うhtaccess作成(生成)/htaccessがFTPに表示されない
3. .htacccessの内容確認
.htaccessの内容を確認します。-p>
ssh の場合は以下のコマンド
1 |
cat .htaccess |
FTP の場合はローカルにファイルを移すなどしてエディタなどで確認してください。
確認内容は以下のように、<Files “xmlrpc.php”> と </Files>で囲われた記述があるか確認してください。
1 2 3 4 |
<Files "xmlrpc.php"> order allow,deny deny from all </Files> |
あれば、その記載がxmlrpc.phpへのアクセス制限の記述になります。
(許可IPを指定している場合は、ここにIPの記載があるはずです。)
上記設定がない場合は、別の対応が必要と思われますので、サーバー管理者などに相談されることをお勧めします。
4. .htaccessのバックアップ
.htaccessにxmlrpc.phpのアクセス制限の記述が確認できれば、次に修正を行いますが、その前にバックアップを取っておきます。
sshの場合は以下のコマンド(バックアップファイル名は任意でかまいません。)
1 |
cp -p .htaccess .htaccess_bak |
ftpの場合はローカルファイルをコピーして別名で保存ておいてください。
5. .htaccessの修正
<Files “xmlrpc.php”> と </Files>そのものと囲われた部分全て、”#” でコメントアウトします。
1 2 3 4 |
#<Files "xmlrpc.php"> #order allow,deny #deny from all #</Files> |
sshの場合はviなどお好きなエディタで編集してください。
ftpの場合はローカルの端末で修正したファイルをサーバの元の場所に配置してください。
6. 確認と実行
ここで、アクセス制限が解除されたか確認したいので、もう一度、ご自分のサーバーのxmlrpc.phpにアクセスしてみてください。
例) サイトのURLがxxxx.comの場合は
http://xxxx.com/xmlrpc.php
アクセスエラーではなく以下のような表示がされれば、アクセス禁止が解除されたことになります。
1 |
XML-RPC server accepts POST requests only. |
この状態でJetpackの連携を行うと成功するはずですので、成功すればすぐに次の手順を実施してアクセス禁止に戻しましょう。
(残念ながらこれでうまくいかなかった場合は、ケースバイケースの対応が必要になると思いますが、一旦次の手順に進んでアクセス禁止に戻しておいてください。)
7. 修正を元に戻す
修正を元に戻すのは、バックアップファイを.htaccessに上書きコピーするか、”#” でコメントアウトした箇所から “#”を削除するだけです。
1 2 3 4 |
<Files "xmlrpc.php"> order allow,deny deny from all </Files> |
サーバ上の.htaccessを元に戻したら、再度ご自分のサーバーのxmlrpc.phpにアクセスしてみて、403エラーになっていれば元に戻っています。
※ 念のためご自分のページもちゃんと表示されるかを確認しておいた方がいいでしょう。修正前と違う点があれば、現在の.htaccessとバックアップを比較して、ちゃんと戻っているか確認しましょう。
まとめ
WordPress.org のフォーラムDisabling XML-RPC may damage JetPack?によるとJetpackはユーザーのサーバーとWordPress.comのサーバーを連携させるためにxmlrpc.phpを使用しているらしいです。なのでこれにアクセス制限があるとうまく連携出来ない、ということのようです。