2014-01-28 2 views
0

나는 다음과 같은 규칙이 있다면 : 아파치의 mod_rewrite 규칙

Rewrite 301 /page/22 http://newdomain.com/ 
Rewrite 301 /page/23 http://newdomain.com/test 
Rewrite 301 /page/24 http://newdomain.com/test2 
Rewrite 301/http://newdomain.com 

가 상단에있는 규칙은 내가 아래에있는 규칙보다 우선합니다

를? 그리고 사용됩니다

Rewrite 301/http://newdomain.com 

리디렉션 새 도메인에 다른 규칙에 의해 포착되지 않는 모든 요청을? URL에 domainName.com 뒤에 슬래시가있는 경우에만 작동합니까?

또한 예를 들어, 내가 규칙에 물음표를 탈출해야합니까 :

Redirect 301 /items/item/94?Test123 http://newdomain.com 

답변

0

은 상단에있는 규칙은 내가 아래에있는 규칙보다 우선 할 것인가? 사용할 내용 :

규칙은 표시되는 순서대로 적용되므로 규칙의 순서는 중요합니다. 비록 Rewrite은 유효한 apache 지시어가 아닙니다. mod_rewrite의 일부인 Redirect과 mod_rewrite의 일부인 RewriteRule이 있습니다. Rewrite 301/http://newdomain.com

당신은 실제로는 이전 규칙에 의해 잡힐하지 않았다 모든 요청을 리디렉션합니다, 여기 Redirect을 의미 가정하면. 이는 Redirect이 두 개의 URL 경로를 함께 연결하기 때문에 / 뒤에 나오는 모든 항목이 대상에 전달되기 때문입니다. 당신은 아마 또한 http://newdomain.com

의 끝에 /을 원하는 또한 예를 들어, 내가 규칙에 물음표를 탈출해야합니까 :

Redirect 문에 일치하지 않습니다 호 쿼리 문자열 또는 URL의 ? 다음의 모든 항목 쿼리 문자열과 일치시킬 수있는 유일한 방법은 mod_rewrite와 %{QUERY_STRING} 변수를 사용하는 것입니다. 당신이하려고하는 것과 동등한 것입니다 :

RewriteCond %{QUERY_STRING} ^Test123$ 
RewriteRule ^items/item/94$ http://newdomain.com/ [L,R=301] 
+0

감사합니다 형제, 나는 형제를 존중합니다. (스탠 마쉬처럼) – user1290717

+0

그리고 네, 나는 리다이렉트 재 작성 (damnit!)을 의미했습니다. – user1290717