ruby-on-rails - OpenShift Rails 应用程序上的 http 到 https 重定向

标签 ruby-on-rails .htaccess redirect ssl openshift

我希望 Openshift Online 上的 Rails 4.0 应用程序仅通过 https 提供内容。 有一个guide它告诉我们在 web 根目录中使用 .htaccess:

RewriteEngine on  

RewriteCond %{HTTP:X-Forwarded-Proto} !https  
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

我按照指南将带有该指令的 .htaccess 文件放入 openshift 卡带上的 app-root/repo 目录中,但没有任何反应。该指南讨论了网络根目录。 Rails 应用程序的 Web 根目录是什么,或者 openshift 上的 Web 根目录是什么?还有另一种方法可以在 openshift 上为 Rails 建立 http 到 https 重定向吗?

最佳答案

我的情况与您类似(但想要根据 Accept-Language http header 进行重定向),并且找不到将 .htaccess 放在 OpenShift ruby​​ 盒上的位置。

暂定为.htaccess

我尝试将 .htaccess 文件放入 app-root/repo , app-root/runtime , app-root/data~/ruby/目录没有成功..

所以我最终从 Rails 应用程序进行了重定向

通过 Rails 为您的案例提供解决方案

如果您想对所有应用程序强制执行 SSL,您只需设置 config.force_ssl = true在你的config/application.rb文件。另一个常见的用例是仅为您的生产环境强制执行 SSL,因此不要将此配置放在常规 application.rb 中。文件,你可以在你的config/environments/production.rb中设置它.

如果您只需要对特定 Controller 强制执行 SSL,您也可以在 Controller 顶部调用force_ssl 方法,如下所示:

class MyController < ApplicationController
  force_ssl
  [...your actions..]
end

我通过 Rails 遇到的问题和解决方案

我想添加这个.htaccess

RewriteEngine On

RewriteCond %{HTTP:Accept-Language} ^pt [NC]
RewriteRule ^/$ /pt/ [L,R=301]

RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteRule ^/$ /fr/ [L,R=301]

RewriteRule ^/$ /en/ [L,R=301]

最后不得不在config/routes.rb中做到这一点Rails 的配置文件

get '/', to: redirect { |path_params, req|
"/#{req.env['HTTP_ACCEPT_LANGUAGE'].scan(/^(?:pt|fr)/).first || 'en'}" }

OpenShift 团队提供的任何帮助来解释在哪里放置 .htaccess Ruby 墨盒仍然很受欢迎!

关于ruby-on-rails - OpenShift Rails 应用程序上的 http 到 https 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23906010/

相关文章:

ruby-on-rails - 具有多个参数和模型访问的 Rake 任务不起作用

ruby-on-rails - 属性在belongs_to 对象中的范围

php - 将子目录中的 JSON 索引文件重定向到 PHP Controller

ruby-on-rails - 新的 Rails 3,带有 json 响应的 ajax 请求

css - rails 4 : How to access database in SCSS

.htaccess - 用一行 htaccess 让 URL 变得漂亮

linux - htaccess 重写规则 windows/linux ,域到子页面

php - 使用 .htaccess 文件时(使用 SQL)登录时出现问题?

flash - 从Flash调用301重定向导致Internet Explorer崩溃

php - HTML。表单成功完成后如何停止重定向?