[RUBY-ON-RAILS] 어떻게 한 도메인에서 다른 도메인으로 리디렉션하는 레일 경로를 사용할 수 있습니까?
RUBY-ON-RAILS어떻게 한 도메인에서 다른 도메인으로 리디렉션하는 레일 경로를 사용할 수 있습니까?
내 애플 foo.tld에서 실행하는 데 사용하지만, 지금은 bar.tld에서 실행됩니다. 요청은 여전히 foo.tld에 올 것이다, 나는 bar.tld로 리디렉션하고 싶습니다.
어떻게 레일 노선에서이 작업을 수행 할 수 있습니다?
해결법
-
==============================
1.레일 3.2.3에서이 작품
레일 3.2.3에서이 작품
constraints(:host => /foo.tld/) do match "/(*path)" => redirect {|params, req| "http://bar.tld/#{params[:path]}"} end
레일 4.0에서이 작품
constraints(:host => /foo.tld/) do match "/(*path)" => redirect {|params, req| "http://bar.tld/#{params[:path]}"}, via: [:get, :post] end
-
==============================
2.이것은 다른 대답의 작업을 수행합니다. 뿐만 아니라하지만, 그것은뿐만 아니라 쿼리 문자열을 유지합니다. (4 레일)
이것은 다른 대답의 작업을 수행합니다. 뿐만 아니라하지만, 그것은뿐만 아니라 쿼리 문자열을 유지합니다. (4 레일)
# http://foo.tld?x=y redirects to http://bar.tld?x=y constraints(:host => /foo.tld/) do match '/(*path)' => redirect { |params, req| query_params = req.params.except(:path) "http://bar.tld/#{params[:path]}#{query_params.keys.any? ? "?" + query_params.to_query : ""}" }, via: [:get, :post] end
참고 : 호스트 : 대신 도메인 : 당신이 전체 도메인 대신 단지 하위 도메인 사용을 처리하는 경우.
-
==============================
3.(비슷한 질문이 의견에 따라) 다른 모든 요청에 HTTP 400을 반환하는 동안 다음과 같은 솔루션은 GET 및 HEAD 요청에 여러 도메인을 리디렉션합니다.
(비슷한 질문이 의견에 따라) 다른 모든 요청에 HTTP 400을 반환하는 동안 다음과 같은 솔루션은 GET 및 HEAD 요청에 여러 도메인을 리디렉션합니다.
/lib/constraints/domain_redirect_constraint.rb:
module Constraints class DomainRedirectConstraint def matches?(request) request_host = request.host.downcase return request_host == "foo.tld1" || \ request_host == "foo.tld2" || \ request_host == "foo.tld3" end end end
/config/routes.rb:
require 'constraints/domain_redirect_constraint' Rails.application.routes.draw do match "/(*path)", to: redirect {|p, req| "//bar.tld#{req.fullpath}"}, via: [:get, :head], constraints: Constraints::DomainRedirectConstraint.new match "/(*path)", to: proc { [400, {}, ['']] }, via: :all, constraints: Constraints::DomainRedirectConstraint.new ... end
어떤 이유로 제약 제약 :: DomainRedirectConstraint.new 할 일이 Heroku가 나를 위해 일을하지 않았다하지만 제약 : 제약 :: DomainRedirectConstraint.new는 벌금을했다.
-
==============================
4.더 현대적인 접근 방식을 비트 :
더 현대적인 접근 방식을 비트 :
constraints(host: 'www.mydomain.com') do get '/:param' => redirect('https://www.mynewurl.com/:param') end
-
==============================
5.
constraints(host: /subdomain\.domain\.com/) do match '/(*path)' => redirect { |params, req| "https://www.example.com#{req.fullpath}" }, via: [:get, :head] end
Heroku가에 사용자 지정 도메인을 사용할 때이 사용하고 난 myapp.herokuapp.com에서 리디렉션 할 -> www.example.com.
from https://stackoverflow.com/questions/10918529/how-can-i-use-rails-routes-to-redirect-from-one-domain-to-another by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 레일 3 루비 어떻게 만드는 'OR'조건 (0) | 2020.03.02 |
---|---|
[RUBY-ON-RAILS] 레일에 jQuery를 포스트 (0) | 2020.03.02 |
[RUBY-ON-RAILS] 초기화되지 않은 상수의 MysqlCompat : (mms2r 보석을 사용하여) MysqlRes (0) | 2020.03.02 |
[RUBY-ON-RAILS] 루비의 URL의 리디렉션을 받기 (0) | 2020.03.02 |
[RUBY-ON-RAILS] 레일 모델에 외래 키 추가 (0) | 2020.03.02 |