我想在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重定向吗?
答案 0 :(得分:2)
我遇到了与你类似的情况(但希望根据Accept-Language
http标头重定向),并且无法找到将.htaccess放在OpenShift ruby盒式磁带上的位置。
我尝试将.htaccess文件放在app-root/repo
,app-root/runtime
,app-root/data
,~/ruby/
目录中但没有成功。
所以我最终从rails app进行重定向
如果您要为所有应用程序强制执行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
我想添加此.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