aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch/http/url.rb
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack/lib/action_dispatch/http/url.rb')
-rw-r--r--actionpack/lib/action_dispatch/http/url.rb13
1 files changed, 8 insertions, 5 deletions
diff --git a/actionpack/lib/action_dispatch/http/url.rb b/actionpack/lib/action_dispatch/http/url.rb
index 1ee9f3c89e..6112ab2fd6 100644
--- a/actionpack/lib/action_dispatch/http/url.rb
+++ b/actionpack/lib/action_dispatch/http/url.rb
@@ -102,6 +102,10 @@ module ActionDispatch
host && IP_HOST_REGEXP !~ host
end
+ def same_host?(options)
+ (options[:subdomain] == true || !options.key?(:subdomain)) && options[:domain].nil?
+ end
+
def normalize_protocol(protocol)
case protocol
when nil
@@ -116,16 +120,15 @@ module ActionDispatch
end
def normalize_host(_host, options)
- return _host unless named_host?(_host)
+ return _host if !named_host?(_host) || same_host?(options)
tld_length = options[:tld_length] || @@tld_length
- host = nil
+ host = ""
if options[:subdomain] == true || !options.key?(:subdomain)
- return _host if options[:domain].nil?
- host = extract_subdomain(_host, tld_length).to_param
+ host << extract_subdomain(_host, tld_length).to_param
elsif options[:subdomain].present?
- host = options[:subdomain].to_param
+ host << options[:subdomain].to_param
end
host << "." unless host.empty?
host << (options[:domain] || extract_domain(_host, tld_length))