2011-08-24 32 views
0

所以,在我的一些数据库记录中,有一个对象,“内容”有一个正文,就像文档一样。有时候,该机构的URL指向我的应用服务器上的图像。这些URL中的很多都是HTTP。Ruby on Rails 2.3.8:有没有办法总是转发到https版本的url?

有没有办法将所有HTTP请求重定向到HTTPS?

我用Rails 2.3.8
和回形针宝石

+0

所以,你想改变链接,存在于http://到https://的内容中? –

+0

种。有超过20K的记录可能包含http链接,只是改变它们会很困难,我认为......这就是为什么我认为重定向它们可能更容易。也许在控制器级别? idk – DerNalia

+0

这些链接指向图像?如果您使用Apache或Nginx进行托管,则只需将URL更改为配置即可。或者,您可以执行搜索并替换转换URL的rake任务 –

回答

0

因为一些浏览器中查看一个HTTPS页面时的安全设置将阻止HTTP资产,你不希望在web服务器来做到这一点(例如mod_rewrite)级别,因为某些浏览器不会那么远。

您不想在视图或控制器级别处理此问题 - 该模型是您执行业务规则的地方,例如保留所有HTTPS。

被保存

class Content < ActiveRecord::Base 
    ... 
    before_validation :force_https 
    def force_https 
    unless body.nil? 
     self.body.gsub! /http:\/\/my\.app\.server/, 'https://my.app.server' 
    end 
    end 
    ... 
end 

2 1)防止HTTP链接)清理现有内容

火了控制台,并运行此:

Content.all.each do |c| 
    c.update_attribute 'body', 
    c.body.gsub(/http:\/\/my\.app\.server/, 'https://my.app.server') 
end 
相关问题