人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Rubyのお願いです。$scheme = (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on") ? 'http' : 'https';
$http_url = $scheme . '://' . $_SERVER['HTTP_HOST'] . ':' . $_SERVER['SERVER_PORT'] . $_SERVER['REQUEST_URI'];
上記のPHPソースをRubyで書くとどうなるのでしょうか?どなたか助けて下さい。$_SERVERが難しくてよくわかりませんToT

●質問者: hayaiee
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:HTTP HTTPS ON PHP REQUEST_URI
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● nuna
●100ポイント

PHP詳しくないですが、Rubyの場合はENVで環境変数がとれます。

scheme = ENV['HTTPS'] == 'on' ? 'https' : 'http'

url = "#{scheme}://#{ENV['HTTP_HOST']}:#{ENV['SERVER_PORT']}#{ENV['REQUEST_URI']}"

◎質問者からの返答

わざわざありがとうございます!助かりました^^


2 ● a-kuma3
●100ポイント ベストアンサー

質問のコードに忠実に書くと、

scheme = (! ENV['HTTPS'].nil? || ENV['HTTPS'] != 'on') ? 'http' : 'https'
http_url = scheme + '://' + ENV['HTTP_HOST'] + ':' + ENV['SERVER_PORT'] + ENV['REQUEST_URI']

https の判定は、こっちの方が好みかな。

scheme = /on/i =~ ENV['HTTPS'] ? 'https' : 'http'
http_url = scheme + '://' + ENV['HTTP_HOST'] + ':' + ENV['SERVER_PORT'] + ENV['REQUEST_URI']

というか、'on' と比較しているのは、IIS 対策だと思うんですけど、

IIS は、'ON' / 'OFF' で設定するんでは無かったかな、と。



http://php.net/manual/ja/reserved.variables.server.php

↑の 'PHP_SELF'、'argv'、'argc' 以外は、ENV から取得できます。

こんな CGI で、ENV から取得できる値の一覧が手に入ります。

puts "Content-type: text/plain; charset=Shift_JIS\n\n"
ENV.each { |key, value|
 puts "#{key} : #{value}"
}
◎質問者からの返答

丁寧なご回答ありがとうございました!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ