Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails-仅重定向到1页的子域_Ruby On Rails_Redirect_Routing - Fatal编程技术网

Ruby on rails Rails-仅重定向到1页的子域

Ruby on rails Rails-仅重定向到1页的子域,ruby-on-rails,redirect,routing,Ruby On Rails,Redirect,Routing,我试图使用Rails 4路由重定向到一个特定的子域(“安全”),只用于一个页面(购物车)。(我需要这样做的原因是SSL证书仅在安全子域上可用。)目前,我有以下内容: get '/cart' => redirect { |p, req| req.url.sub('http:// site.com', 'http://secure.site.com') }, :constraints => { :host => 'site.com' } 这是可行的,但是当我希望安全子域默认返

我试图使用Rails 4路由重定向到一个特定的子域(“安全”),只用于一个页面(购物车)。(我需要这样做的原因是SSL证书仅在安全子域上可用。)目前,我有以下内容:

  get '/cart' => redirect { |p, req| req.url.sub('http:// site.com', 'http://secure.site.com') }, :constraints => { :host => 'site.com' }
这是可行的,但是当我希望安全子域默认返回到根域(site.com;无www)时,用户单击的每个后续链接都会保留安全子域


实现这一点的最佳方法是什么?

原因是,通常所有link href属性都是相对路径,所以“/controller/action”而不是“”。相对路径意味着假定相同(子)域

您可以将所有链接更改为使用_url而不是_path,但我建议您不要这样做

相反,我建议编写一个机架中间件,并根据完整路径在那里进行重定向,或者在应用服务器(nginx、apache等)配置级别处理它

或者更好,你为什么不把所有链接都放在https下?听起来是最好的方式:)