Ruby on Rails redirect to www. only if no subdomain is present
我正在尝试重定向到www。仅当另一个子域不存在时。
如果url是
如果url是
我已经尝试过了,但是它添加了www。即使已存在另一个子域,也可以访问每个URL。
1 2 3 4 5 | constraints(host: /^(?!www\\.)/i) do get '' => redirect { |params, request| URI.parse(request.url).tap { |uri| uri.host ="www.#{uri.host}" }.to_s } end |
我认为我需要在某个地方检查
有什么想法吗?
这对我有用。不过,也许有更好的方法可以解决此问题。
1 2 3 4 5 6 7 | 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):
1 2 3 4 5 6 7 8 9 10 11 12 | 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 |