2013-06-12 2 views
1

mod_rewrite 구성에 약간의 문제가 있습니다.mod_rewrite : 두 파일을 제외한 모든 것을 "/"로 리디렉션하는 방법은 무엇입니까?

두 파일을 제외하고 모든 것을 루트 디렉토리 (http://www.mydomain.com/)로 리디렉션하고 싶습니다.

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !^/ 
RewriteCond %{REQUEST_FILENAME} !/file1.html 
RewriteCond %{REQUEST_FILENAME} !/file2.html 
RewriteRule ^(.*)$ http://www.mydomain.com/ [L,R=301] 

이 unfortunetely 아무것도 리디렉션하지 않습니다

그래서 나는이 시도했다.

첫 번째 RewriteCond 줄을 생략하면 리디렉션 오류가 발생합니다.

어디서 잘못 되었나요?

답변

7

먼저 REQUEST_FILENAME 대신 REQUEST_URI을 사용하고 싶을 것입니다. 가상 호스트 시나리오에서는 동일 할 수 있지만 일반적으로는 그렇지 않을 수 있습니다. 아마도 로컬 경로가 아니라 URI를 다시 쓰는 것을 의미 할 것입니다.

둘째, 규칙;

RewriteCond %{REQUEST_FILENAME} !^/ 

은 ... 그것은 다시 작성되는, 모든의 URI입니다 /로 시작하는 것이 에 대한 모든 요청을 제외합니다. 당신이하고자하는 것은 아마도 것입니다; 무시 된 파일에 대한

RewriteCond %{REQUEST_URI} !^/$ 

규칙은 아마이 "로 끝나는"대신이 경기를 "포함"의 일치로 마지막에 추가 $이 있어야합니다.

이렇게 남습니다.

RewriteEngine on 
RewriteCond %{REQUEST_URI} !^/$ 
RewriteCond %{REQUEST_URI} !/file1.html$ 
RewriteCond %{REQUEST_URI} !/file2.html$ 
RewriteRule ^(.*)$ http://www.mydomain.com/ [L,R=301] 
+0

나는 그것을 스스로 발견했다! 당신이 제안한 것과 꽤 똑같은 요아킴 -하지만 어쨌든 고마워요! –

관련 문제