当前位置:  开发笔记 > 编程语言 > 正文

不使用htaccess将'myapp.com'重定向到rails中的'www.myapp.com'?

如何解决《不使用htaccess将'myapp.com'重定向到rails中的'www.myapp.com'?》经验,为你挑选了3个好方法。

使用Morph Labs的Appspace部署站点意味着没有自动方式将"myapp.com"重定向到"www.myapp.com"(并且无法访问.htacess).

有这样的轨道方式吗?我需要一个像subdomain-fu这样的插件吗?

更具体地说,我正在尝试做类似的事情:

'myapp.com'=>'www.myapp.com'

'myapp.com/session/new'=>'www.myapp.com/session/new'

基本上,我总是希望每个请求都附加'www'子域名(因为SSL证书的具体名称是'www.myapp.com').



1> carson..:

也许这样的事情可以解决问题:

class ApplicationController < ActionController::Base
  before_filter :check_uri

  def check_uri
    redirect_to request.protocol + "www." + request.host_with_port + request.request_uri if !/^www/.match(request.host)
  end
end


这是Rack中间件的一个很好的用例.您可以从这个获得一些想法:http://coderack.org/users/jtrupiano/entries/37-rackrewrite

2> 小智..:

卡森的回答很有效.

这是代码走另一条路(www - >没有www)

before_filter :check_uri

def check_uri
  if /^www/.match(request.host)
    redirect_to request.protocol + request.host_with_port[4..-1] + request.request_uri 
  end
end



3> Lee McAlilly..:

我不得不改变Carson的答案,让它在Rails 3中运行.我用request.fullpath替换了request.uri:

class ApplicationController < ActionController::Base
  protect_from_forgery

  Rails.env.production? do
    before_filter :check_url
  end

  def check_url
    redirect_to request.protocol + "www." + request.host_with_port + request.fullpath if !/^www/.match(request.host)
  end
end

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有