Ruby URL先のページが存在するか
以下のようなクエリのあるURLついて。
http://blog.nogizaka46.com/karin.itou/?d=20180512
例えば、クエリ(パラメータ?)を"?d=20180512"としたとき、挙動としては"?d=20180512"に対応したページが開かれます。
次に、"?d=20180000"などの存在しない値を入力した場合、**http://blog.nogizaka46.com/karin.itou/**ここにリダイレクトされます。
このようなWEBサイトがあるとき、リダイレクトされる(ページが存在しない)場合はfalse, リダイレクトされない(ページが存在する)場合はtrueを返すメソッドを作りたいです。
そこで、下記のようなコードを作成しました。
require 'net/http'
require 'uri'
def url_exist?(uri)
agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36"
begin
url = URI.parse(uri)
Net::HTTP.new(url.host).get(url.path, {"User-Agent": agent})
rescue
return false
else
return true
end
end
puts url_exist?("http://blog.nogizaka46.com/karin.itou/?d=20180512")
puts url_exist?("http://blog.nogizaka46.com/karin.itou/?d=20180000")
これだと、"?d=~"の値がどんなものでも、trueが返ってきてしまいました。
リダイレクトした先のURLを取得する['location']も試してみたのですが、中身は空となってしまいます。
どうにかして、リダイレクト先のURLを取得するか、falseが取得できるようにしたいです。
どのようにすればいいでしょうか?
お知恵をお貸しいただけると幸いです。