<IfModule mod_rewrite.c>...</IfModule>
블록은 블록 withing에 포함되어있는 모든 만 mod_rewrite
경우 고려되는 것을 보장 :로
http://www.example.com/something/else
는 동일합니다 모듈이로드되었습니다. 그렇지 않으면 서버 오류가 발생하거나 URL 재 작성을위한 모든 요청이 무시됩니다.
다음 두 줄은 그 뒤에 오는 RewriteRule
줄의 조건입니다. 이 두 가지 다시 쓰기 조건이 충족되는 경우에만 RewriteRule
이 수락됨을 의미합니다.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
조건은 단순히 요청 된 URI는 "기존 파일"이나 폴더 유형이 아닌 경우에만 수행됩니다 다시 쓰기 상태. 즉, 요청 된 파일/폴더가 실제로 요청 된 서버 경로에 존재하면 해당 서버/파일 경로가 제공되고 그렇지 않으면 재 작성이 수행됩니다.
마지막 줄은 실제 다시 쓰기 작업을 수행합니다. 웹 사이트의 도메인 이름을 따르는 모든 것을 취하여 다시 작성한 요청에 추가합니다.이 요청은 index.php/
으로 시작합니다.
여기 예입니다.
다음 URL (example.com/example-page.html
)을 요청한다고 가정 해 보겠습니다.
가상 호스트 루트 폴더에 example-page.html
이라는 기존 파일이나 폴더가없는 경우 끝에있는 다시 쓰기 규칙은 실제로 다음 URI를 example.com/index.php/example-page.html
으로 요청합니다.
같은 물건을위한 일반적인 이유는 요청을 수신하는 웹 응용 프로그램이 하나의 중앙 부트 스트랩 파일 (여기 그것 index.php
)
편집을 모든 요청을 처리 담당하는 방식으로 설계되어있다 : 여기 내 의견에 mod_rewrite
에 대한 아주 좋은 초보자 친화 튜토리얼입니다.
http://net.tutsplus.com/tutorials/other/a-deeper-look-at-mod_rewrite-for-apache/
예,하지만'index.php/something/else'의 의미는 무엇입니까? – DotNetStudent
아파치는 index.php를 호출하지만, 스크립트는 $ _SERVER [] superglobal에서 뭔가를 추출하기 위해 약간의 작업을 수행 할 것입니다 –