在openshift rails app上http到https重定向

时间:2014-05-28 08:07:48

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

我想在Openshift Online上使用我的rails 4.0应用程序仅通过https提供内容。 有一个guide告诉我在web-root中使用.htaccess:

RewriteEngine on  

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

我按照指南将一个带有指令的.htaccess文件放在openshift盒式磁带上的app-root / repo目录中,但没有任何反应。该指南讨论了一个web-root目录。 rails应用程序的web-root目录是什么,openhift上的web-root目录是什么?还有另一种方法可以在openshift上为rails建立http到https重定向吗?

2 个答案:

答案 0 :(得分:2)

我遇到了与你类似的情况(但希望根据Accept-Language http标头重定向),并且无法找到将.htaccess放在OpenShift ruby​​盒式磁带上的位置。

暂定.htaccess

我尝试将.htaccess文件放在app-root/repoapp-root/runtimeapp-root/data~/ruby/目录中但没有成功。

所以我最终从rails app进行重定向

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

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

如果您只需要为特定控制器强制执行SSL,您也可以在控制器顶部调用force_ssl方法:

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

我的问题&amp;通过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]

最后必须在带有

的rails的config/routes.rb配置文件中执行此操作
get '/', to: redirect { |path_params, req|
"/#{req.env['HTTP_ACCEPT_LANGUAGE'].scan(/^(?:pt|fr)/).first || 'en'}" }

来自OpenShift团队的任何帮助,以解释将.htaccess放入Ruby盒式磁带的位置仍然非常受欢迎!

答案 1 :(得分:0)

Ruby 1.9 for OpenShift 2有一个解决方案,其中包含终端步骤:

cd your_ruby_git_project_folder / public /

vi .htaccess

id

cd ..

git add。 -A

git commit -m'message'

git push