2011-09-07 9 views
1

내 사이트의 작성된 버전을 /publish 안에 저장하는 방법에 대한 Paul Irish의 예를 따르려고합니다. 성공적으로 자동화 된 빌드 프로세스를 통합했지만 올바른 폴더를 가리 키도록 .htaccess 파일을 가져올 수 없습니다.Htaccess 다시 쓰기 조건 문제

내 목표 :

라이브 서버에 '내장'사이트를 사용하는 /publish 폴더에 모든 정상 사이트 트래픽을 리디렉션합니다. 그러나 언제 개발 서버에서 / 일반 루트 폴더에있는 개발 파일을 사용합니다.

내 문제 :

가 나는 htaccess로는 /publish 디렉토리에 루트의 요청을 다시 작성합니다. 동일한 htaccess가 //publish 디렉토리 내에서 사용될 것이므로 /publish 디렉토리 내의 요청을 다시 쓰기를 막기 위해 재 작성 조건이 필요합니다. /publish/publish/my-page. 나는 현재이 있습니다

RewriteCond %{SCRIPT_FILENAME} !^/publish/.+ 
RewriteRule ^(.*)$ publish/$1 [L] 

조건은 위의 /publish로 시작하는 script_filename이없는 요청을 찾습니다. 그렇다면 앞에 publish/으로 요청을 다시 작성해야합니다.

그러나 이것은 작동하지 않습니다. 누구든지 잘못된 아이디어가 있습니까? 다른 서버 변수를 사용하여 요청이 /publish 디렉토리에 있는지 여부를 식별 할 수 있습니까?

답변

2

대신 %{REQUEST_URI}를 사용한다 : 그런데
, 당신은 더 많은 정보를위한 mod_rewrite를 문서 페이지의 모양을 가질 수있다 다른 사람.

RewriteCond %{REQUEST_URI} !^/publish/ 
RewriteRule ^(.*)$ publish/$1 [L] 
+0

spot on! 고맙습니다. – Kit

2

나는 명시 적으로 아파치에게 PHP 파일을 요구하지 않을 때 %{SCRIPT_FILENAME}이 설정되어 있지 않다고 생각하지만 어쩌면 %{REQUEST_FILENAME}으로 시도해야합니다. 이 사이트 루트에 상대적인 경로가 아닌 실제 파일 이름 등이있을 것이다 올바른 변수이기 때문에 http://httpd.apache.org/docs/current/en/mod/mod_rewrite.html#rewritecond