[RUBY-ON-RAILS] 루비 온 레일즈에 www가 URL에 www가 아닌 요청을 리디렉션
RUBY-ON-RAILS루비 온 레일즈에 www가 URL에 www가 아닌 요청을 리디렉션
그것은 간단한 문제입니다,하지만 난 몇 가지 빠른 인터넷 검색을하고 답변을 찾을 수없는 것.
이 (301) 직접 (http://x.com/abc> http://www.x.com/abc)을하는 루비 온 레일스 방법은 무엇. before_filter?
해결법
-
==============================
1.요청도 전혀 레일에 접촉하지 않도록 이상적으로 당신은 당신의 웹 서버 (아파치, nginx를 등) 접속과 운전에서이 작업을 수행 할 것입니다.
요청도 전혀 레일에 접촉하지 않도록 이상적으로 당신은 당신의 웹 서버 (아파치, nginx를 등) 접속과 운전에서이 작업을 수행 할 것입니다.
귀하와 ApplicationController에 다음 before_filter 추가 :
class ApplicationController < ActionController::Base before_filter :add_www_subdomain private def add_www_subdomain unless /^www/.match(request.host) redirect_to("#{request.protocol}x.com#{request.request_uri}", :status => 301) end end end
아파치를 사용하여 리디렉션을하고 싶지 않은 경우, 당신은이를 사용할 수 있습니다 :
RewriteEngine on RewriteCond %{HTTP_HOST} !^www\.x\.com [NC] RewriteRule ^(.*)$ http://www.x.com/$1 [R=301,L]
-
==============================
2.레일 4를 들어, 사용 -
레일 4를 들어, 사용 -
before_filter :add_www_subdomain private def add_www_subdomain unless /^www/.match(request.host) redirect_to("#{request.protocol}www.#{request.host_with_port}",status: 301) end end
-
==============================
3.당신이 레일을 사용하는 경우 요한의 대답은, 완벽하게 정상적으로 동안> = 2.3 나는 새로운 금속을 생성하는 것이 좋습니다 것입니다. 레일 금속은보다 효율적으로 그리고 그들은 더 나은 성능을 제공합니다.
당신이 레일을 사용하는 경우 요한의 대답은, 완벽하게 정상적으로 동안> = 2.3 나는 새로운 금속을 생성하는 것이 좋습니다 것입니다. 레일 금속은보다 효율적으로 그리고 그들은 더 나은 성능을 제공합니다.
$ ruby script/generate metal NotWwwToWww
그런 다음 파일을 열고 다음 코드를 붙여 넣습니다.
# Allow the metal piece to run in isolation require(File.dirname(__FILE__) + "/../../config/environment") unless defined?(Rails) class NotWwwToWww def self.call(env) if env["HTTP_HOST"] != 'www.example.org' [301, {"Content-Type" => "text/html", "Location" => "www.#{env["HTTP_HOST"]}"}, ["Redirecting..."]] else [404, {"Content-Type" => "text/html"}, ["Not Found"]] end end end
물론, 당신은 더 금속을 사용자 정의 할 수 있습니다.
아파치를 사용하려면, 여기에 몇 가지 구성입니다.
-
==============================
4.레일 더 나은 3 방법이있다 - 당신의 routes.rb 파일이 넣어 :
레일 더 나은 3 방법이있다 - 당신의 routes.rb 파일이 넣어 :
constraints(:host => "example.com") do # Won't match root path without brackets around "*x". (using Rails 3.0.3) match "(*x)" => redirect { |params, request| URI.parse(request.url).tap { |x| x.host = "www.example.com" }.to_s } end
최신 정보
여기 도메인 불가지론을 만드는 방법입니다 :
constraints(subdomain: '') do match "(*x)" => redirect do |params, request| URI.parse(request.url).tap { |x| x.host = "www.#{x.host}" }.to_s end end
-
==============================
5.나는 반대 (루트 도메인 리디렉션에 WWW)을 달성하려고이 문서를 발견했다. 그래서 루트 도메인에 www가 모든 페이지를 리디렉션 코드의 조각을 썼다.
나는 반대 (루트 도메인 리디렉션에 WWW)을 달성하려고이 문서를 발견했다. 그래서 루트 도메인에 www가 모든 페이지를 리디렉션 코드의 조각을 썼다.
-
==============================
6.당신은 아래의 코드를 시도 할 수 있습니다 -
당신은 아래의 코드를 시도 할 수 있습니다 -
location / { if ($http_host ~* "^example.com"){ rewrite ^(.*)$ http://www.example.com$1 redirect; } }
-
==============================
7.또 다른 해결책은 추가적인 유연성을 많이 가지고 랙 정식 호스트 보석을 사용하는 수 있습니다. config.ru에 한 줄을 추가 :
또 다른 해결책은 추가적인 유연성을 많이 가지고 랙 정식 호스트 보석을 사용하는 수 있습니다. config.ru에 한 줄을 추가 :
use Rack::CanonicalHost, 'www.example.com', if: 'example.com'
호스트가 example.com 일치하는 경우에만 www.example.com로 리디렉션됩니다. GitHub의 중요 정보의 다른 예 많아요.
from https://stackoverflow.com/questions/1706247/redirect-non-www-requests-to-www-urls-in-ruby-on-rails by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 주 / 월 / 등 및 액티브에 의해 그룹화? (0) | 2020.02.25 |
---|---|
[RUBY-ON-RAILS] 설치 "와 같은 파일을로드 할 수 없습니다 - mkmf을"우분투에 실패 난간 (0) | 2020.02.25 |
[RUBY-ON-RAILS] 검증 실패 : 업로드 파일의 내용과 일치하지 않는 확장자가 (0) | 2020.02.25 |
[RUBY-ON-RAILS] 3 자동로드 레일 (0) | 2020.02.25 |
[RUBY-ON-RAILS] 협회는 레일 협회에 아마 맞춤법이 틀린 문제를 발견하지 명명 (0) | 2020.02.25 |