gpt4 book ai didi

ruby-on-rails - openshift rails app 上的 http 到 https 重定向

转载 作者:太空宇宙 更新时间:2023-11-03 13:01:15 26 4
gpt4 key购买 nike

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

RewriteEngine on  

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

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

最佳答案

我和你的情况相似(但想根据 Accept-Language http header 进行重定向),但找不到将 .htaccess 放在 OpenShift ruby​​ cartridge 上的地方.

暂定 .htaccess

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

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

通过 Rails 解决您的问题

如果您想为所有应用程序强制执行 SSL,您只需在 config/application.rb 文件中设置 config.force_ssl = true。另一个常见的用例是只为您的生产环境强制执行 SSL,因此您可以在 config/environments/production 中设置它,而不是将此配置放在您的一般 application.rb 文件中。 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]

最后不得不在 Rails 的 config/routes.rb 配置文件中使用

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

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

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com