2017-02-20 9 views
0

저는 다중 언어 페이지에서 작업하고 있지만 하위 도메인에는 한 가지 문제가 있습니다.PHP가 하위 도메인을 기본 도메인으로 리디렉션합니다

가 나는 URL en.example.com를 사용하려면 나는 모든 (example.com으로 설정하고 이미지, CSS- 루트) example.com/index.php 읽고 싶어하지만 브라우저에서 난 여전히 URL en.example.com을 원하는 모든 데이터 읽기 example.com에서 설정하고 이미지, 포함, CSS에 대한 상대 경로를 변경할 수 없습니다 ... 지금은 더 많은 언어 (세션 및 쿠키에서 설정)에 대한 하나의 URL을 가지고 있기 때문에 이것은 구글을위한 좋은 해결책이 아닙니다. 코드에 미치는 영향을 최소화하여 변경하고 싶습니다.

가능합니까? 예를 들어 htaccess 또는 다른 방법? 답변 주셔서 감사합니다.

로마

추가 :

내가

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{HTTP_HOST} ^en.example.com$ [OR] 
    RewriteCond %{HTTP_HOST} ^www.en.example.com$ 
    RewriteRule (.*)$ http://www.example.com/$1 [R=301,L] 
</IfModule>  

하려고하지만,이 코드 변경 URL 주소입니다.

+0

'htaccess'를 의미하는 경우'htacees'를 선택한 다음 예. htaccess는 브라우저에서 URL을 변경하여 화이트 아웃을 리디렉션 할 수 있습니다. – JustOnUnderMillions

+0

예, htaccess를 의미합니다 (영어로는 유감입니다). – Roman

답변

0

mod_rewrite는 재 작성 및 재, 두 가지에 도움이 도움을 주셔서 감사합니다.

  • 클라이언트가 인식하지 않고 요청이 내부적으로 변경되면 재 작성이라고합니다.
  • 리디렉션은 요청이 변경되고 클라이언트가 다른 곳에서 리소스를 가져 오는 경우 리디렉션이라고합니다.

요청이

RewriteRule (.*)$ http://www.example.com/$1 [R=301,L] 
  • 또는 같은 R|redirect 플래그 첨부 후 2 가지 경우

    • RewriteRule

      리디렉션되는 RewriteRule의 타겟 URL을 절대적 URL이 때 다른 호스트를 가리키고있다. 요청이 en.example.com위한 대상은 브라우저에서 변경 요청 URL을 유지하려는 경우, 당신은 R 플래그를 사용하지해야하며 변화하지해야합니다, 그래서

      RewriteRule (.*)$ http://www.example.com/$1 [L] 
      

    때 호스트 부분. 당신이 정말로 원격 서버를지도해야하는 경우

    , 당신은 P|proxy 깃발이 작업을 수행하려면

    RewriteRule ^(.*)$ http://www.example.com/$1 [P] 
    

    을 시도 할 수는 mod_proxy 모듈을 사용할 수 있어야합니다.또한

    참고이 플래그를 사용하여 성능 경고

    실적 경고
    는 지속적인 연결의 처리없이, mod_proxy를의 사용을 트리거합니다. 이것은 당신이 ProxyPass로 또는 ProxyPassMatch로 설정하면 프록시의 성능이

  • +0

    나는 그것을 시도하지만 올바르게 작동하지 않습니다. URL은 항상 www.example.com으로 변경되었습니다. – Roman

    0

    내가

    <IfModule mod_rewrite.c> 
        RewriteEngine On 
        RewriteCond %{HTTP_HOST} ^en.example.com$ [OR] 
        RewriteCond %{HTTP_HOST} ^www.en.example.com$ 
        RewriteRule (.*)$ http://www.example.com/$1 [L] 
    </IfModule> 
    

    그것을 시도했지만 언제나 아마도 www.en.example.com

    1

    에서 http://www.example.com에 당신을 URL을 변경 더 나은 것을 의미합니다 다른 가상 호스트의 PHP 파일을 포함 시키려면 :

    <?php 
    require '../../example.com/public_html/index.php'; 
    ?> 
    

    이렇게하면 원하는 것을 허용 할 수 있지만 가상 호스트 구성에 따라 항상 가능한 것은 아닙니다. 동일한 DirectAdmin 사용자로 모든 도메인을 실행하는 경우이 예제가 작동해야합니다.

    +0

    먼저 시도했지만 이미지 및 CSS 파일의 상대 경로에 문제가 있습니다. – Roman

    +0

    에셋 파일의 절대 경로를 사용하거나 기본 href를 사용합니다. – vinz

    +0

    자산 디렉토리를 심볼릭 링크 할 수도 있습니다. 약간 더러 웠지만 경로를 변경하는 많은 작업을 저장하고 htaccess 리디렉션으로 인한 추가 http 요청을 방지합니다. – vinz

    관련 문제