ベーシック認証環境下でWordPressの予約投稿の失敗、Flashアップローダー動作不能、XML-RPCからの画像アップロード失敗をまとめて解決する方法
WordPressを本格的に利用してみようと検討するためにローカル環境ではなく、ベーシック認証によってアクセス制限されたネットワーク環境下で運用している場合、予約投稿に失敗したり、Flashアップローダーが動作せず途中で止まったり、XML-RPCから投稿しようとするとなぜか投稿できなかったりといった問題が発生します。これらはすべてベーシック認証が邪魔しているのが原因なので、認証を外せばエラーは起きなくなるのですが、それだと本質的な問題解決になりません。
何が原因かと思って調べてみたところ、解決方法を日本語で書いたページが検索した範疇では見あたらなかったため、メモしておきます。中には仕事で同じような問題にぶつかり、解決できなかったと書いている人もいたので、覚えておいて損はないはずです。また、ほかの問題にも応用の利く解決方法です。
というわけで、実際にベーシック認証が原因でWordPressがうまく動かない場合の解決方法は以下から。
まず、失敗する原因がベーシック認証であるかどうかの特定から。WordPressをインストールしているサーバにSSHでログインし、以下のようにすればすぐにわかります。以下、環境はFreeBSDの場合におけるレスポンス例になります。
wget http://【WordPressをインストールしたサーバのドメイン名】/wp-cron.php
失敗時は以下のような感じで、「Authorization failed.」というレスポンスが返ってきます。
--2010-03-13 12:17:51-- http://【WordPressをインストールしたサーバのドメイン名】/wp-cron.php
Resolving 【WordPressをインストールしたサーバのドメイン名】... 【WordPressをインストールしたサーバのIPアドレス】
Connecting to 【WordPressをインストールしたサーバのドメイン名】|【WordPressをインストールしたサーバのIPアドレス】|:80... connected.
HTTP request sent, awaiting response... 401 Authorization Required
Authorization failed.
で、どうやって解決するかというと、その方法がWordPressの公式マニュアルサイトにある以下のページに書いてあります。
User:Hakre/Htaccess Auth Excludes << WordPress Codex
http://codex.wordpress.org/User:Hakre/Htaccess_Auth_Excludes
手順としては、ベーシック認証をかけるために「AuthType Basic」を書いている「.htaccess」ファイルを開き、以下のように追記するだけです。
# Exclude the file upload and WP CRON scripts from authentication
Satisfy Any
Order allow,deny
Allow from all
Deny from none
成功したかどうかはSSHでログインし、以下のようにすればすぐにわかります。
wget http://【WordPressをインストールしたサーバのドメイン名】/wp-cron.php
成功していると以下のようになります。
--2010-03-13 12:25:46-- http://【WordPressをインストールしたサーバのドメイン名】/wp-cron.php
Resolving 【WordPressをインストールしたサーバのドメイン名】... 【WordPressをインストールしたサーバのIPアドレス】
Connecting to 【WordPressをインストールしたサーバのドメイン名】|【WordPressをインストールしたサーバのIPアドレス】|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 0 [text/html]
Saving to: `wp-cron.php'
[ <=> ] 0 --.-K/s in 0s
2010-03-13 12:25:47 (0.00 B/s) - `wp-cron.php' saved [0/0]
なお、ベーシック認証が原因でない場合、ほかには以下のような解決方法があるので参考にして下さい。
WordPressで予約投稿の失敗が続く時にチェックする3つのリスト - 雑が喰おう
http://hisitu.bne.jp/zatugakuou/2217.html
[WordPress] 予約投稿が失敗するときの対処法 | Sun Limited Mt.
http://www.syuhari.jp/blog/archives/1941
WP Basic認証をかけている場合の「予約投稿」 Ver.2.7以降? : zontheworld
http://www.zontheworld.com/blog/archives/105
Wordpress2.9で予約投稿が失敗する場合の修正方法 SOHOプログラマのぼやき @Links[アットリンクス]
http://blog.at-links.biz/?p=1561
・関連記事
フリーのWordPress用テーマがPSDファイル付きでたくさん配布されている「WordPress Theme Designer」 - GIGAZINE
最強の呼び声高いブログ用対スパムプラグイン「Akismet」 - GIGAZINE
MySQLを自動バックアップする「AutoMySQLBackup」 - GIGAZINE
・関連コンテンツ