2014-01-29 2 views
1

컨트롤러 내에 클래스 이름이 존재하는지 확인하기 위해 자동로드 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로 규칙

답변

0

TL의 나머지 부분에서 디렉토리를 제외 어떻게; DR은 그래서 제 질문은 : 나는 디렉토리를 제외 어떻게 내 htaccess 규칙의 나머지 부분에서

첫 번째 규칙은 여기에서 주범입니다. 규칙은 다음과 같습니다.

Options +FollowSymLinks 
RewriteEngine on 

# skip engine from further rules 
RewriteRule ^engine($|/) - [L,NC] 

RewriteRule ^([^/\.]+)\.html$ index.php?controller=contents&method=viewGeneric&view=generic&link=$1 [L,QSA] 

RewriteRule ^/?$ index.php?controller=contents&method=viewHome&view=home [L,QSA] 
관련 문제