2014-11-04 4 views
0

로컬로 (MAMP 사용) 및 준비 서버에서 살 수있는 회사 프로젝트 디렉토리를 구축 중입니다.RewriteCond를 사용하는 .htaccess의 조건부 리디렉션

내가 뭘 하려는지는 .htaccess 하나가 있어야 요청되는 위치에 따라 조건부로 리디렉션됩니다.

스테이징 서버의 루트에서 홈 페이지에 이르기까지 첫 번째 부분은 정상적으로 작동합니다.

RewriteEngine On 

RewriteCond %{HTTP_HOST} staging.com 
RewriteRule (.*) http://www.homepage.com [R=301,L] 

이것은 내가 추측 할 수없는 부분입니다. 루트 (예 : http://102.168.0.27:8888)에서 로컬 서버를 보는 경우 동일한 도메인의 폴더 (예 : http://102.168.0.27:8888/directory)로 리디렉션하고 싶습니다. 모든 폴더 (http://102.168.0.27:8888/*)보기는 폴더가 지정되지 않은 경우에만 리디렉션하지 않아야합니다.

너무 복잡해지면 IP 주소가 변경 될 수 있으며이를 업데이트하지 않아도됩니다. 또한 리디렉션하지 않아야하는 도메인에 폴더를 지정하지 않으려합니다. 모든 폴더 여야합니다. 스테이징 서버 루트에

  • 홈 페이지로 리디렉션 :

    RewriteCond %{HTTP_HOST} !staging.com 
    RewriteRule (.*) /directory [R=301,L] 
    

    는 요약 :

    다른 리디렉션은 로컬, 난 그냥 폴더에 대한 내 요구 사항을 충족하기 위해 그것을 얻을 수없는만큼 쉽다

  • 로컬로 지정되지 않은 경우 폴더로 리디렉션
  • 로컬로 지정하면 폴더가 리디렉션되지 않음
  • 지역 환경에 대한 8888 포트 조건을 사용하여 폴더 이름
+0

모든 로컬 env는 8888 포트를 사용합니까? 당신이 그 조건에 걸릴 수 있기 때문에 – yoavmatchulsky

+0

예, 항상 그 포트. 나는 가야 해. –

답변

1

를 지정하지 마십시오 로컬 도메인/IP를 지정하지 마십시오,이 시도 :에

RewriteCond %{SERVER_PORT} 8888 RewriteCond %{REQUEST_URI} ^/$ RewriteRule .* /directory [R=301,L]

다른 파일/디렉토리 로컬 서버는이 규칙의 영향을받지 않습니다.

+0

그건 작동하지 않는 것 같습니다. 루트로도 리디렉션되지 않습니다. –

+0

답변을 업데이트하고 조건을 REQUEST_URI (으)로 이동했습니다. – yoavmatchulsky

관련 문제