1

이 작업을 수행하는 방법에 대한 몇 가지 예를 시도했지만 아무 것도 작동하지 않으며 쿼리 문자열이 기본 URL의 일부이기 때문에 두려움이 있습니다. 여기 301 루트 쿼리 매개 변수에서 리디렉션

는 내가하고 싶은 것이 있습니다 :

리디렉션 http://example.com/?from=TEST_1을 ->http://example.com/foo

리디렉션 http://example.com/?from=TEST_2 ->http://example.com/bar 여기

내가 시도 것입니다 :

RewriteEngine On 
RewriteCond %{QUERY_STRING} from=TEST_1 
RewriteRule (.*) /foo [L,R=301] 

불행히도 위의 규칙은 아무런 영향을 미치지 않습니다. 나는 그것이 루트 도메인 요청의 일부로 때 쿼리 문자열 값을 확인하기 위해해야 ​​할 뭔가 특별한

Redirect 301 /foo /bar 

있습니까 : 나는 정적 뭔가 규칙을 변경하는 경우는 잘 작동합니다 (아래 참조)?

답변

2

RewriteEngine 라인 바로 아래 첫 번째 규칙으로이 2 가지 규칙을 사용해보십시오. 대상 URI의 끝에

  • ?
    RewriteEngine On 
    
    RewriteCond %{QUERY_STRING} ^from=TEST_1$ 
    RewriteRule ^/?$ /foo? [L,R=301] 
    
    RewriteCond %{QUERY_STRING} ^from=TEST_2$ 
    RewriteRule ^/?$ /bar? [L,R=301] 
    

    대상에서 이전 쿼리 문자열을 삭제하는 데 사용됩니다.
  • ^/?$은 방문 페이지와 만 일치하는 정규식입니다.
+1

붐, 감사합니다! –

+1

다행 이니 다행입니다. – anubhava