diff options
Diffstat (limited to 'actionpack/lib/action_controller/request.rb')
-rwxr-xr-x | actionpack/lib/action_controller/request.rb | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/actionpack/lib/action_controller/request.rb b/actionpack/lib/action_controller/request.rb index 032b19d6eb..f16a109cc7 100755 --- a/actionpack/lib/action_controller/request.rb +++ b/actionpack/lib/action_controller/request.rb @@ -74,8 +74,16 @@ module ActionController end def request_uri - (%r{^\w+\://[^/]+(/.*|$)$} =~ env['REQUEST_URI']) ? $1 : env['REQUEST_URI'] # Remove domain, which webrick puts into the request_uri. - end + unless env['REQUEST_URI'].nil? + (%r{^\w+\://[^/]+(/.*|$)$} =~ env['REQUEST_URI']) ? $1 : env['REQUEST_URI'] # Remove domain, which webrick puts into the request_uri. + else # REQUEST_URI is blank under IIS - get this from PATH_INFO and SCRIPT_NAME + script_filename = env["SCRIPT_NAME"].to_s.match(%r{[^/]+$}) + request_uri = env["PATH_INFO"] + request_uri.sub!(/#{script_filename}\//, '') unless script_filename.nil? + request_uri += '?' + env["QUERY_STRING"] unless env["QUERY_STRING"].nil? || env["QUERY_STRING"].empty? + return request_uri + end + end def protocol env["HTTPS"] == "on" ? 'https://' : 'http://' |