2013-11-15 1 views
1

저는 WordPress 사이트에서 특정 하위 도메인의 페이지가 기존의 인쇄물과 일치 함을 보여주기 위해 URL을 다시 작성해야합니다. htaccess 및 mod_proxy를 통해이 작업을 수행하려고 노력 중이며 가까이 가고 있지만 도움이 필요합니다. 내가 subdomain.domain.edu 입력하면mod_proxy를 사용하여 사용자에게 표시되는 URL 재 작성

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^subdomain\.domain\.edu$ [NC] 
RewriteRule^http://othersubdomain.domain.edu/folder1/folder2/folder3%{REQUEST_URI} [L,P] 

, 내가 올바른 페이지를 얻을 수 (있는이 http://othersubdomain.domain.edu/folder1/folder2/folder3에 앉아있다) 브라우저의 URL이 기록 된 상태로 유지 : 여기

다소 작동 내가 지금 가지고있는 코드입니다 subdomain.domain.edu로 위대한 작품!

내부 페이지에 문제가 있습니다. 예를 들어 subdomain.domain.edu/contact를 입력하면 적절한 페이지로 리디렉션되지만 URL은 다시 작성되지 않고 서비스중인 전체 URL이 표시됩니다.

누군가 내 페이지의 URL을 다시 쓸 수있게 도와 줄 수 있습니까? 나는 너무 가깝다고 느낀다!

답변

2

글쎄, 여기서는 주로 mod_proxy를 사용하지 않습니다. mod_rewrite의 프록시 플래그를 사용하고 있습니다. 적어도 URL이 동일하게 유지되도록하려면 ProxyPassReverse을 사용해야합니다.

또한 mod_rewrite는 사용 사례에 제안되지 않습니다. 백엔드 서버에서 반환 한 페이지에는 othersubdomain.domain.edu를 직접 참조하는 절대 URL이 포함될 수 있습니다. mod_proxy의 ProxyPass 또는 ProxyPassMatch를 mod_proxy_html과 함께 사용해야합니다. 당신이 아직도 그것을 알아낼 수없는 경우에 코멘트에서 저를 시키십시오.

UPDATE : 모든

먼저, 앉아서 the complete documentation about mod_proxy을 읽을 시간이 걸릴. 가장 강력한 아파치 모듈 중 하나이며, 깊이있게 배우는 것은 먼 길을 갈 것입니다. 두 번째로 .htaccess를 사용하지 마십시오.

귀하의 특정 하위 도메인에 대해 구성된 가상 호스트가 있다고 가정합니다. 그렇지 않은 경우 먼저 구성해야합니다. 지금, 당신의 가상 호스트 설정에서,이 줄을 추가

<VirtualHost *:80> 
    ServerName subdomain.domain.edu 

    ProxyPass  /http://othersubdomain.domain.edu/folder1/folder2/folder3/ 
    ProxyPassReverse/http://othersubdomain.domain.edu/folder1/folder2/folder3/ 
    ProxyPassReverseCookieDomain othersubdomain.domain.edu subdomain.domain.edu 
    ProxyPassReverseCookiePath /folder1/folder2/folder3//
</VirtualHost> 

위 설정 지시어에 프록시합니다 http://othersubdomain.domain.edu/folder1/folder2/folder3/foo/bar-http://subdomain.domain.edu/foo/bar에 대한 요청. 응답을 사용할 수있게되면 헤더가 변경되어 subdomain.domain.edu에서 생성 된 것으로 사용자에게 표시됩니다. 백엔드 서버에서 쿠키를 생성하는 경우 (예 : 사용자가 로그인해야하는 경우) 쿠키 지시문이 필요합니다.

이것은 먼 길을 걸립니다. 그런 다음 페이지 내용, 포함 된 스타일 시트 또는 자바 스크립트의 링크를 변경하려면 mod_proxy_html에 대한 설명서를 참조해야합니다.

+0

'ProxyPassReverse'는 htaccess 파일에서 작동하지 않으며 프록시 응답이 리디렉션 인 경우'Location :'헤더 만 다시 씁니다. 페이지 내용의 링크에 대해서는 아무 것도하지 않습니다. –

+0

@JonLin - 두 번째 단락을 참조하십시오. - 첫 번째 장소에서 mod_proxy를 사용하도록 제안하고 + 페이지 콘텐츠의 링크를 처리하도록 mod_proxy_html을 권장합니다. .htaccess 파일에서 수행 할 수있는 모든 작업은 서버, 가상 호스트 또는 디렉토리 구성으로 이동할 수 있습니다. – Chandranshu

+0

미안하지만 저는 주로 IIS와 .NET 사용자입니다. 이렇게하기 위해 추가해야하는 구문에 대한 제안이 있습니까? 아파치의 전 세계는 꽤 혼란 스럽다. 어떤 도움을 주셔서 다시 한번 감사드립니다. – user2994930