2013-01-13 5 views
1

이전 도메인의 모든 요청을 새 도메인의 홈 페이지 (루트 사이트)로 리디렉션하고 싶습니다.후행 쿼리 문자열없이 모든 도메인의 모든 사이트를 새 도메인으로 리디렉션

RewriteEngine On 
RewriteRule ^(.*)$ http://newdomain.com/ [R=301] 

(참조 : .htaccess redirect all pages to new domain를) 내가 예를 들어하려고 할 때하지만 이상한 이유를 들어, URL의 www.olddomain.com/faq/pdf.php?cat=7에 액세스하기 위해 나는이 작업을 것이라고 생각 & id = 93 & artlang = de www.newdomain.com/?cat=7 & id = 93 & artlang = de로 리디렉션됩니다. 무엇이 문제 일 수 있습니까? 이 도메인은 나의 새로운 메인 도메인의 (부가 도메인으로) 하위 디렉토리에 있기 때문에 과거에

나는 몇 가지 문제가 있었지만 메인 도메인의 htaccess로에 내가있어 :

RewriteCond %{HTTP_HOST} ^([^.]+\.)*olddomain\.com 
RewriteRule .* - [L] 

이러한 종류의 오류를 비활성화합니다. 다른 아이디어? 나는 지금부터 몇 시간 동안 이걸 시험 중이다.

편집 : 문제가 쿼리 문자열 인 경우이를 봤습니다.

+0

리디렉션 URL에 $$$이 (가) 표시되지 않습니다. 문제입니다. –

+0

죄송합니다, 무슨 뜻인지 모르겠습니까? – Andy

답변

2

당신이 경로 및 쿼리 문자열없이 새 도메인 로 리디렉션하려면 빈 쿼리 문자열 업데이트]

RewriteEngine On 
RewriteRule .* http://newdomain.com/? [R=301,L] 
+0

이것은 정확히 내가 원하는 것이지만 작동하지 않고 여전히 쿼리 문자열을 전달합니다. 나는 그것이 이상하다는 것을 알고 있지만 문제의 근원을 얻을 수는 없습니다. – Andy

+0

@Andy 대상 URL에 최종 '?'이 있는지 확인하십시오. 난 그냥 내 환경에서 이것을 테스트하고 그것은 최종'? '와 함께 작동합니다. –

+0

나는 "/?" 내 URL의 끝에서. 하지만 여전히 쿼리를 유지합니다. 내 연결된 질문에서 언급 한 것처럼 아파치 버그 일 수 있습니까? 아니면이 문제와 관련이 없습니까? 나는 Saluman의 변종을 사용했습니다. – Andy

1

추가해야합니다, 예를 들어

RewriteEngine On 
RewriteCond %{HTTP_HOST} (?:www\.)?oldomain\.com [NC] 
RewriteRule ^(.*)$ http://newdomain.com/? [R=301,L] 

을하지 업데이트를 대답으로.

+0

고마워요.하지만 내 목표는 나머지 URL을 전달하지 않는 것입니다. 내 문제는 자동으로 전달된다는 것입니다. – Andy

+0

오케이. 뒤로 가져 왔어. 'DPI' 플래그를 추가하십시오. 이것처럼 [R = 301, L, DPI] 무슨 일이 일어나는 지보십시오. –

+0

@Salman 고마워요. 나는 그 질문에 규칙을 복사하여 붙여 넣기 만하고'L'이 빠졌음을 알지 못했다. –

1

mod_rewrite은 쿼리 문자열이 지정되지 않은 경우 다시 작성한 URL 에 쿼리 문자열을 추가합니다.. (A ? 충분 추가) 문제를 방지하기 위해 빈 쿼리 문자열을 추가

RewriteEngine On 
RewriteRule ^(.*)$ http://newdomain.com/? [R=301,L] 

또한 QSA 플래그를 읽어보십시오.

+0

QSA에 대한 링크를 제공해 주셔서 감사합니다. 의문점은 문제를 해결했습니다. – Andy

관련 문제