2012-12-12 5 views
2

다음이 가능합니까?아파치 리디렉션/재 작성 엔진

  1. 는 사용자가 URL http://example1.com/example.php를 요청하고 아파치는 http:// example1.com/example.php?id=1

  2. 는 사용자가 URL http://example2.com/example.php를 요청 열리고 아파치는 http:// example2.com/example.php?id=2

를 엽니 다하지만 사용자의 ID를 볼 수 없습니다해야 그의 브라우저 주소 표시 줄 (사용자는 http://example1.com/example.php 또는 http://example2.com/example.php 만 참조).

사용자의 ID는 보이지 않지만 example.php으로 전송할 수 있습니다.

어떻게 구현할 수 있습니까?

+1

예, 가능합니다. 지금까지 뭐 해봤 어? –

+0

안녕하세요, RedirectTemp/Redirect를 시도했지만 문제는 사용자가 브라우저의 주소 표시 줄에서 "id = ..."을 볼 수 있다는 것입니다. 제 예제에서 "전문 용어"를 제게 주시겠습니까? 그럼 나는 google거야. – John

+0

mod_rewrite 문서를 살펴보고 특히 'P'플래그를 사용하면 브라우저 위치를 변경하지 않고 수정 된 요청을 프록시 처리 할 수 ​​있습니다. –

답변

0

올바른 해결책입니까?

RewriteEngine On 
RewriteRule ^/example.php http://example1.com/example.php$1 [P] 
ProxyPassReverse /example.php?id=1 http:// example1.com/example.php 

RewriteEngine On 
RewriteRule ^/example.php http://example2.com/example.php$1 [P] 
ProxyPassReverse /example.php?id=2 http:// example2.com/example.php 
+0

당신이하려고하는 것에 대한 당신의 묘사에 근거하여 그것은 작동하지 않을 것입니다. 복사하여 붙여 넣기로 정확한 답을 찾을 수 없습니다. 문서를 읽고 몇 가지 테스트를해야합니다. 그'$ 1'에 주목하고 그것이 어떻게 설정되는지 ... –

0

몇 가지 개념을 이해해야합니다. 서버 번 그가 URL에서 요청 된 경로를 가지고 수정없이 사용할 몇 가지

  • 을 할 수있는 사용자 요청 URL을 받았다. 이것이 기본 해결책입니다
  • 요청 된 경로를 별칭, AliasMatch 또는 RewriteRules를 통해 수행 할 수있는 다른 물리적 경로에 매핑합니다.
  • 요청한 경로를 다른 웹 사이트에 매핑하면서 다른 웹 사이트가 요청 된 사실을 숨 깁니다. 그것은 mod_proxy 또는 mod_rewrite가 처리 할 수있는 프록시 솔루션입니다. (그러나 필요하지 않습니다.)
  • 사용자를 다른 경로로 리디렉션하고 리다이렉트 지침 또는 mod_rewrite를 사용하여 다른 클라이언트/서버 왕복을 사용하는 새 URL 보내기 스위스 칼). 하지만 그럴 필요는 없습니다.

그래서 요청 된 경로의 서버 측만 다시 매핑을 원합니다.

하자.이 매핑을 만들기 위해 mod 재 작성을 사용한다고 가정 해 보겠습니다. 부대 결과 URI와 같은 다른 URI - 투 - 파일 이름 번역의 처리를 위해 URL 매핑 엔진에 다시 전달 될 : PT |

통과 : 당신이 all tags available in RewriteRule (summary here)를 선택하면 흥미로운 사람이다 별칭 또는 리디렉션.

qsappend | QSA :는 재 작성 대상에 생성 된 쿼리 문자열을 원래의 요청 URL에서 어떤 쿼리 문자열을 추가

마지막 | L : 즉시 더 이상 적용되지 않습니다 중지 다시 쓰기 프로세스 규칙. 특히 디렉토리 별 및 .htaccess 컨텍스트에 대한주의 사항 (END 플래그 참조)

nocase | NC : 대소 문자를 구분하지 않습니다.한다 RewriteRule에서

대상 (또는 대체 문자열)는 기본적으로 파일 경로로 가정 다음 PT 플래그

사항을 보여준다.

글쎄, 그럴 수도 있습니다. 그러나 PT를 사용하는 것은 좋은 일이다. 다른 아파치 설정 요소가 있다면 mod_rewrite 작업 후에 적용하도록해야한다.

그래서 ... 일부 쿼리 문자열 인수를 처리해야 할 수도 있고이 id 인수는 요청의 도메인 이름을 기반으로하며 example.php 스크립트에만이 동작이 필요하다고 가정합니다. 그런 규칙 (시험 안 함)으로 연구를 시작해야합니다 :

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^example1.com$ [nocase] 
RewriteRule ^example\.php$ example.php?id=1 [passthrough,qsappend,last] 
RewriteCond %{HTTP_HOST} ^example2.com$ [nocase] 
RewriteRule ^example\.php$ example.php?id=2 [passthrough,qsappend,last]