2013-02-24 1 views
0

나는 같은 URL이 있습니다경로에서 쿼리로 mod_rewrite하는 방법은 무엇입니까?

http://olddomain.com/demo?abc=ced&ghi=jkl

그리고 쿼리로 별도의 도메인에 다시 싶습니다 :

:

http://newdomain.com/legacy?url=http%3A%2F%2Folddomain.com%2Fdemo%3Fabc%3Ddef%26ghi%3Djkl

는 지금은 이런 일이 RewriteRule (.*) http://newdomain.com/legacy?url=%{HTTP_HOST}%{REQUEST_URI}?%{QUERY_STRING}

문제는 출력에 있습니다 :

http://newdomain.com/?url=olddomain.com/demo?abc=def&ghi=jkl

그래서 http:// 문자 /, = 및 & 이스케이프되지 않습니다?. 원래 요청에 쿼리가 없으면 후행이 올 것인가? 그렇지만 큰 문제는 아닙니다.

+0

첨부 된 검색어의이 부분은 어디에 있습니까? 들어오는 URL에'& ghi = jkl'이 있습니까? 'http : // olddomain.com /'은 대체 URL에서 'http : // example.com /'으로 대체해야합니까? –

+0

예 - 몇 가지 오타가 있습니다. '& ghi = jkl'은 원래 경로에 포함되어야하고'http : // example.com /'은'http : // olddomain.com /'이어야합니다 - 이제는 문제가 해결되었습니다. –

답변

0

이 작업을 시도 할 수 있습니다 :

Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} ^/demo [NC] 
RewriteRule .* http://newdomain.com/legacy?url=http://%{HTTP_HOST}%{REQUEST_URI} [L,R,QSA] 

리디렉션

http://olddomain.com/demo?abc=ced

http://newdomain.com/legacy?url=http://olddomain.com/demo?abc=ced

에 모든 문자열을 입력 쿼리를 제외하고, 고정 된 것으로 가정한다. 내 댓글에 대한 응답이 없었다으로

,이 답변이 가정

(질문에) 대체 URL에 추가 된 쿼리에
  • &ghi=jkl, 또한 들어오는 URL

    에서 쿼리의 일부입니다
  • http://example.com/은 동일 http://newdomain.com/입니다.

+0

거의 작동합니다. 인코딩되지 않은 부분은 쿼리입니다 (원래 URL로 인코딩되지 않고 "일반"매개 변수로 수신 됨). 질문을 업데이트하여 양식을 수정했습니다. 'http : // olddomain.com/demo % 3Fabc % 3Ddef % 26ghi % 3Djkl'과 같은 형식으로 수정되었습니다. –

+0

두 번째 질문은이 쿼리에서'http'와'https'를 확인하는 방법입니다. –

관련 문제