Wordpress+httpsで、にほんブログ村の新着記事反映に対応する
にほんブログ村での衝撃
最近、Wordpressで新しいサイトを始めたので、試しに老舗ランキングサイトの「にほんブログ村」に登録してみました。
ですが、記事を書いても書いても、にほんブログ村が検知してくれず、全然新着記事としてあがってこない。
設定を見ても間違っていないし、これはおかしいな…と運営に質問してみたのですが、そこで衝撃の事実。
どうやらwordpress.comのドメイン以外、httpsには対応していないらしい…orz
登録している人、みんな素のまま認証してるの!?
いい方法がないか試してみる
にほんブログ村の新着記事の取得方法は至ってシンプル。
RSSのURLをにほんブログ村に登録。
新着記事投稿後、にほんブログ村にpingを飛ばす。
pingを受けたにほんブログ村が、登録されているRSSから記事を取得。
ということのようです。
そこで、もしかしてRSSがhttpで読めるようになればOKなのかな?と。
実際に試してみたところ、それであっさり新着記事が反映されました。
う〜ん、でもRSS読むのにhttpとhttpsで何が違うんだろうか。非対応な理由が謎すぎる ^^;
RSSだけhttpにした方法
通常、Wordpressは www.example.com/feed/
がRSSのURLになるようですが、https対応している場合、httpでアクセスしてもWordpressのsiteurlの設定よって自動でhttpsにリダイレクトしてしまいます。
そこで苦肉の策。
こんな感じで、no_ssl
というディレクトリを作り、feed.phpという新規ファイルを作ります。
feed.phpの内容はこのような感じです。
<?php $url = 'https://'.$_SERVER['SERVER_NAME'].'/feed/'; $ch = curl_init(); $ch_options = array( CURLOPT_URL => $url, CURLOPT_HEADER => false, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 60, CURLOPT_CUSTOMREQUEST => 'GET', // リダイレクトを辿る CURLOPT_FOLLOWLOCATION => true, CURLOPT_MAXREDIRS => 10, CURLOPT_AUTOREFERER => true, ); curl_setopt_array($ch, $ch_options); $response = curl_exec($ch); curl_close($ch); header('Content-Type: application/rss+xml'); echo $response; ?>
見ての通り、https://www.example.com/feed/
の内容をそのまま表示させているだけです。
デフォルトだとContent-Typeがtext/htmlになってしまうため、rss+xmlで上書きします。
リダイレクトを辿る設定は、念のためのおまじない程度に書いてます。
これで直接的にWordpressと関わらないため、siteurlによるリダイレクトは働きません。
後は、にほんブログ村にhttp://www.example.com/no_ssl/feed.php
をRSSとして登録し、pingを送れば完了です!
※ apache、nginx、.htaccess等、別の所で、http→httpsのリダイレクトを噛ませている場合は、no_ssl
のディレクトリだけ除外してください。