간단한 문제이지만 간단한 인터넷 검색을하는 답변을 찾지 못하는 것 같습니다. 이 301 행을 직접하는 레일의 방법은 무엇입니까 (http://x.com/abc>http://www.x.com/abc). before_filter?www가 아닌 요청을 Rails의 www url로 리디렉션
답변
웹 서버 (Apache, nginx 등) 구성에서이 작업을 수행하여 요청이 레일스에 전혀 영향을주지 않도록하는 것이 가장 이상적입니다.
추가하려면 다음 before_filter
당신의 ApplicationController
:
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]
위대한 답변 존. Rails> = 2.3을 사용하고 있다면 Metal을 사용하는 것이 좋습니다. :) –
고마워요! 예, 금속에 대한 좋은 지적입니다. –
여러분을 환영합니다! –
Rails> = 2.3을 사용하고 있습니다. 새 메탈을 만드는 것이 좋습니다. Rails Metals이 더 효율적이며 더 나은 성능을 제공합니다.
$ 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
물론 금속을 사용자 정의 할 수 있습니다.
Apache를 사용하려는 경우 here's a few configurations.
Simone, Rails 3에서 이것을 사용하는 방법에 대한 조언이 있습니까? 'www.foo.com '을'foo.com'으로 리디렉션하고 싶습니다. –
Rails 3을 사용하면 훨씬 쉬운 방법입니다. 'redirect' 라우팅 방법을 사용하십시오. 메탈을 사용할 필요가 없습니다. –
반대쪽 (www에서 루트 도메인 리디렉션)을 달성하려고 할 때이 기사를 발견했습니다. 그래서 코드 조각을 redirects all pages from www to the root domain으로 작성했습니다.
더 나은 레일 3 방법이있다 - 당신의 routes.rb
파일에 넣고 :
constraints(subdomain: '') do
match "(*x)" => redirect do |params, request|
URI.parse(request.url).tap { |x| x.host = "www.#{x.host}" }.to_s
end
end
링크가 끊어졌습니다. – iamnotmaynard
경우 :
여기이다가 불가지론 도메인 만드는 방법을
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
업데이트 레일 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
당신은 아래의 코드를 시도 할 수 있습니다 - 왜 당신이 www가 원하는거야
location/{
if ($http_host ~* "^example.com"){
rewrite ^(.*)$ http://www.example.com$1 redirect;
}
}
- 1. www가 아닌 URL에서 iis의 www가 아닌 URL로 리디렉션
- 2. htaccess rule www가 아닌 www 리디렉션 서버를 리디렉션합니다.
- 3. Wordpress Multisite www가 아닌 페이지 리디렉션 실패
- 4. 적절한 방법으로 .htaccess에서 www가 아닌 사이트로 리디렉션
- 5. IIS 6 www가 아닌 주소로 리디렉션
- 6. www가 아닌 URL을 htaccess를 사용하여 www가 아닌 URL로 리디렉션하는 방법은 무엇입니까?
- 7. django www가 아닌 www가 아닌 미들웨어 인증 문제
- 8. www가 iis에서 제공되고 www가 아닌 것은 apache에서 제공됩니까?
- 9. Wordpress의 WWW 링크가 홈페이지로 리디렉션
- 10. 비 www가 htaccess로 리디렉션 다른 하위 도메인
- 11. 301 www가 아닌 www로 리디렉션 항상 작동하지 않음
- 12. .htaccess 특정 URL을 제외하고 www가 아닌 www로 리디렉션
- 13. GlassFish가 www가 아닌 도메인으로 www를 리디렉션합니다.
- 14. .htaccess www가 아닌 www를 www로 리디렉션합니다.
- 15. 브라우저에서 두 번째 요청을 실행하지 않고 새 URL로 리디렉션 하시겠습니까?
- 16. j2me의 URL로 리디렉션
- 17. 이전 URL로 리디렉션 하시겠습니까?
- 18. JSF의 외부 URL로 리디렉션
- 19. Www-data/var/www/
- 20. www-only 리디렉션을위한 htaccess
- 21. 부두에 표준 URL을 설정하고 www 사용자를 www가 아닌 주소로 리디렉션하는 방법은 무엇입니까?
- 22. .htaccess를 사용하여 www가 아닌 페이지를 단일 하위 폴더를 제외한 www 페이지로 리디렉션하는 방법
- 23. Ruby on Rails의 양식 리디렉션
- 24. .htaccess 리디렉션을 숨기는 동안 외부 URL로 리디렉션
- 25. 모든 페이지 쿼리를 Rails의 홈페이지로 리디렉션
- 26. Chrome 브라우저의 www 앞에 www가 없으면이를 해결할 수있는 트릭이 있습니까?
- 27. Wordpress 설치에서 www가 아닌 URL을 강제로 입력하면 무한 루프가 발생합니다.
- 28. .htaccess 제한 문자를 URL로 리디렉션
- 29. 스트리밍 할 URL로 파일 리디렉션
- 30. www 및 non www 리디렉션 문제. 누군가 도와주세요!
를? 그것은 무엇을 당신에게 주는가? Checkout http://no-www.org/index.php –
@James - www의 일반적인 사용법. 정적 콘텐츠를 제공하기 위해 두 번째 "cookieless"도메인이 필요 없도록하기 위해서입니다. – MiffTheFox