さっきの記事の続き、ブログ村に記事がアップされない理由を調べられるだけ調べてみた。例によってちんぷんかんぷんな人が多いかもしれないが。
Webサーバーのアクセスログを見ると、記事をアップするとすぐにブログ村からBotがやってきて更新情報を拾おうとしている。それは2段階に分かれている。
まず第1段階。更新情報のメタデータ(フィード)が入っているURLにまずアクセスが来る。正常に記事が取得していたときには、
"GET /blog/hammer/feed HTTP/1.1" 200 74945 "-" "blogmuraBot/2.0 (+https://blogmura.com)"
というようにまずステータスコード200(正常にアクセスできた)が返り、その内容を解析したBotが再び、
"GET /blog/hammer/archives/2020/05/04-15-50-09-14660.html HTTP/1.1" 200 16797 "-" "blogmuraBot/2.0 (+https://blogmura.com)"
というように個別の記事情報を取得しにくる。これが第2段階。
しかし、更新されなくなってからのログでは、最初のアクセスで、
"GET /blog/hammer/feed HTTP/1.1" 301 162 "-" "blogmuraBot/2.0 (+https://blogmura.com)"
とステータスコード301(リダイレクト)が返される。
リダイレクトとは、あるURLに来たアクセスを他のURLに転送することなのだが、このサイトはSSL化したため、http://で始まるURLはhttps://に転送される。その時にはログにはいったんhttp://のアクセスが301で転送され、次に転送先にアクセスして200が返るという2段構えになる。
"GET /blog/hammer/archives/2020/04/feed HTTP/1.1" 301 "GET /blog/hammer/archives/2020/04/feed HTTP/2.0" 200
というように301と200が続けて返される。
しかし、301が返されるということはこのリダイレクトが効いてないという可能性があるのだが、なぜリダイレクトされないかわからない。普通なら、
1.クライアント→サーバにアクセス
2.サーバ→クライアントに301を返して、こっちじゃなくてこのリダイレクトにアクセスしてください、と指定
3.クライアント(ああそっちなのね)→リダイレクト先にアクセス
4.サーバ→クライアント(リクエストしたURLの結果を返す)
という手順を踏むはずなのだが、怪しいのは3.のところ。クライアント(ブログ村)側が301ステータスで戻ってきても、その中に書かれているリダイレクト先にアクセスしないということなのか。
そんなことってあるのか?
ちなみにローカルサーバから手動でfeedにアクセスすると、こんな結果が返ってくる。
$ telnet www.yet-another-world.jp 80 Trying 163.44.187.86... Connected to www.yet-another-world.jp. Escape character is '^]'. GET /blog/hammer/feed HTTP/1.1 Host: www.yet-another-world.jp HTTP/1.1 301 Moved Permanently Server: nginx Date: Thu, 07 May 2020 06:26:59 GMT Content-Type: text/html Content-Length: 162 Connection: keep-alive Location: https://www.yet-another-world.jp/blog/hammer/feed <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx</center> </body> </html>
「HTTP/1.1 301 Moved Permanently」と301が返されていて、「Location: https://www.yet-another-world.jp/blog/hammer/feed」とリダイレクト先が書かれている。これにしたがって再度クライアントはリダイレクト先のURLにアクセスするはずなのだが、「そのように作られてない」ということかのか。
そんなことってあるのか?
とりあえずブログ村へ問い合わせを送ってみた。まともな回答が返ってくるかな。このサイト、ちょっとシステム的にはいまいちなのだ。