2010-01-15 4 views
7

임 설치하는 phpancake, 이이 다시 쓰기 규칙의 의미는 무엇입니까?

application/ 
install/ 
library/ 
public/ 
sql_schema/ 
install.html 
install.php 

같은이 폴더 쉐마이 규칙은 무슨 뜻입니까?

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ /vote/public/index.php [NC,L] 

답변

11

다시 쓰기에는 두 부분이 있습니다. 첫 번째는 요청 된 파일 이름이 0 (-s), 기호 링크 (-l) 또는 디렉토리 (-d)보다 큰 일반 파일 인 경우 아무데도 다시 쓰지 않도록 지정합니다. 아무런 행동도 취하지 마라. [NC,L]은 규칙이 대소 문자를 구분하지 않으며 이러한 조건이 일치하는 마지막 규칙임을 의미합니다.

다른 모든 요청은 /vote/public/index.php으로 전달됩니다.

이 다시 쓰기의 목적은 실제 파일을 간섭없이 서버에서 가져올 수 있다는 것입니다. 첫 번째 규칙이 없으면 모든 파일 요청 (css 및 js 파일, 이미지 등)이 index.php으로 이동하면 상황이 엉망이 될 것입니다.

일반적으로 이것은 하나의 선언으로 작성됩니다. 당신은 조건을 부정 할 수 있으며, 다음 [OR] statemens도 꺼낼 수있다 :

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-s 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^.*$ /vote/public/index.php [NC,L] 

이 원래 문에 해당합니다.

+0

@Tatu Ulmanen :'RewriteCond % {REQUEST_FILENAME} -f '이 무엇을 의미하는지 설명해 주시겠습니까? '-s'와'-f' 옵션이 서로 다른 "크기"입니까? 또한 정규 파일 (Binary가 아닌)은 무엇입니까? –

0

사람들은 요청 된 파일 (또는 디렉토리 또는 심볼릭 링크), 디스크에 있는지 확인 주로 표준 재 작성되는 경우 파일/디렉토리/등. 사용되어야한다.

모든 다른 경기는

+0

@Tatu Ulmanen의 답변에서 'RewriteCond % {REQUEST_FILENAME} -f'의 의미를 설명해주십시오. '-s'와'-f' 옵션이 서로 다른 "크기"입니까? 또한 정규 파일 (Binary가 아닌)은 무엇입니까? –

0

첫 번째 규칙은 제로 (-s)보다 큰 크기의 일반 파일에 매핑 할 수있는 모든 요청을 통해 전달합니다 /votes/public/index.php하는 상징적 인 가야 링크 (-l) 또는 디렉토리 (-d). 다른 모든 요청은 두 번째 규칙에 의해 가져오고 /vote/public/index.php으로 다시 작성됩니다.

관련 문제