2011-04-12 8 views
0

하위 도메인이 있습니다 : sub1.tld.com, sub2.tld.com 등등. 이 하위 도메인에는 중요한 정보가 포함되어 있습니다. 하지만 다른 URL을 여는 것을 막기 위해 예 : sub1.tld.com/anypage 또는 sub2.tld.com/dir/more/anyurl.html. tld.com/anypage 또는.htaccess 하위 도메인의 기사에서 주 도메인으로 리디렉션

그래서, 내가 리디렉션하기 전에 두 가지를 확인해야 tld.com/dir/more/anyurl.html :이 URL은 기본 도메인 tld.com로 리디렉션해야

:
  1. 그것은 하위 도메인
  2. 은 하위 도메인의 루트 페이지

나는이 규칙을 만들지 않은 것입니다 예상대로 규칙이 설정 작동 0

RewriteCond %{HTTP_HOST} ^.+\.tld\.com [NC] 
RewriteCond %{REQUEST_URI} !^/$ 
RewriteRule ^(.*)  http://tld.com/$1 [R=301,L] 

은 (sub1.tld.com/anypage에게 tld.com/anypage에 리디렉션)뿐만 아니라 tld.com에 sub1.tld.com을 리디렉션합니다. 오류는 어디에 있습니까? 두 번째 문자열이 잘못 되었나요?

RewriteCond %{HTTP_HOST} ^.+\.tld\.com$ [NC] 
RewriteRule ^/(.+)$   http://tld.com/$1 [R=301,L] 

또는 당신이 경우 루트 확인하기 위해이 문자열을 사용할 수 있습니다 :

답변

2

하지 % {요청자}.

퍼센트가 {THE_REQUEST}이 웹 서버에 원료 브라우저의 쿼리가 포함 : 예를 들어, GET /anypage.html HTTP/1.1, 당신은 URL http://anysite.com/anypage.html을 여는 경우.

그래서, 여기 당신은 완벽한 작업이 htaccess로에 대한 규칙 설정은 다음과 같습니다

RewriteCond %{HTTP_HOST} ^.+\.tld\.com$ 
RewriteCond %{THE_REQUEST} ^get\ /(.+)\ http.* [NC] 
RewriteRule ^(.+)   http://tld.com/$1 [R=301,L] 
2

이 시도 변수를 확인하는 가장 신뢰할 수는 % {THE_REQUEST}했습니다 알 수없는 이유로

RewriteCond %{THE_REQUEST} !^[A-Z]{3,9}\ /\ HTTP/ 
+0

운 .. 길고 짧은 URL을 리디렉션 :( –

관련 문제