컨트롤러 내에 클래스 이름이 존재하는지 확인하기 위해 자동로드 PHP 함수가있는 사이트를 만들고 있습니다. 이 함수는 index.php에 있으며 사이트의 모든 URL에서 실행되며, 적절한 경우 php로 리디렉션됩니다.htaccess mod에서 하위 디렉토리 제외하기
engine이라는 문서 루트에 새 하위 디렉토리를 추가했습니다. 이 하위 디렉토리에는 문서 루트 내의 기본 index.php에서 자동로드 기능을 거치지 않고 실행해야하는 별도의 클래스가 있습니다.
index.php를로드하는 기본 다시 쓰기 규칙에서 engine 서브 디렉토리와이 안에있는 모든 파일/폴더를 제외 할 수있는 .htaccess 규칙을 찾고 있습니다.
다음은 내가 시도한 3 가지 제외 규칙을 보여주는 .htaccess 파일의 샘플입니다.
규칙 2와 규칙 3은 아무런 영향을 미치지 않았습니다. 규칙 1은 engine 서브 디렉토리 내의 모든 항목에 대한 모든 요청을 해당 서브 디렉토리의 index.php로 재 지정합니다. 규칙 1을 사용할 때 요청 uri의 나머지 부분을 잃는 것처럼 보입니다.
예를 들어 engine/subfolder/lib/file.php 규칙을로드하려면 engine/index.php로 보내야합니다. 나는 요청 uri의 나머지 부분을 추가 할 필요가있는 그 규칙 내에서 작은 것을 놓칠지도 모른다라고 생각한다.
Options +FollowSymLinks
RewriteEngine on
#rule 1
RewriteCond %{REQUEST_URI} !^/engine
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ engine [L,QSA]
#rule 2
RewriteRule ^(engine)($|/) - [L]
#rule 3
RewriteRule ^(engine).* - [NC,L]
RewriteRule ^([^/\.]+).html$ index.php?controller=contents&method=viewGeneric&view=generic&link=$1 [L]
RewriteRule ^(/)?$ index.php?controller=contents&method=viewHome&view=home [L,QSA] # Default load
TL; DR은 그래서 제 질문은 : 내 htaccess로 규칙