Ruby on rails RubyonRails重定向到www。只有在没有子域的情况下
我正在尝试重定向到www。只有当另一个子域不存在时 如果url是Ruby on rails RubyonRails重定向到www。只有在没有子域的情况下,ruby-on-rails,ruby,redirect,Ruby On Rails,Ruby,Redirect,我正在尝试重定向到www。只有当另一个子域不存在时 如果url是example.com,那么我想重定向到www.example.com 如果url是blog.example.com,那么我不想重定向 我已经尝试过了,但它会将www.添加到每个url,即使已经存在另一个子域 constraints(host: /^(?!www\.)/i) do get '' => redirect { |params, request| URI.parse(request.url).tap {
example.com
,那么我想重定向到www.example.com
如果url是blog.example.com
,那么我不想重定向
我已经尝试过了,但它会将www.添加到每个url,即使已经存在另一个子域
constraints(host: /^(?!www\.)/i) do
get '' => redirect { |params, request|
URI.parse(request.url).tap { |uri| uri.host = "www.#{uri.host}" }.to_s
}
end
我想我需要检查子域。是否存在?
某个地方,但不确定在哪里
有什么想法吗?这对我很有用。不过,也许有更好的办法
constraints(subdomain: '') do
constraints(host: /^(?!www\.)/i) do
get '' => redirect { |params, request|
URI.parse(request.url).tap { |uri| uri.host = "www.#{uri.host}" }.to_s
}
end
end
我在应用程序控制器(Rails 6)中执行了以下操作:
class ApplicationController
哦,是的!完全忘了,但我得等两天
class ApplicationController < ActionController::Base
before_action :ensure_www
# Other stuff
protected
def ensure_www
if request.subdomain != 'www'
redirect_to url_for(subdomain: 'www', only_path: false)
end
end
end