2011-12-22 4 views
3

부트 스트 래퍼 파일을 통해 파일을 라우팅하도록 PHP 응용 프로그램에 htaccess 다시 쓰기 설정이 있습니다. 본질적으로 목표는 www.domain.com/view/key/value/key/value와 같은 URL을 사용하여 뷰가 적절하게 라우팅되고 키/값 쌍이 부트 스트 래퍼에서 작성한 함수를 통해 사용할 수있게하는 것입니다 전망에. 모두 잘 작동했다 ...htaccess 다시 쓰기 규칙에서 파일 제외

즉, 내가 아작스 - y 물건을하기 시작했다. 모든 ajax 쿼리를 하나의 파일 인 ajaxDispatcher.php로 라우팅합니다. 내가 그렇게했을 때, htaccess (정확하게)가 요청을 잡았고 부츠 스트랩을 부적절하게 사용했습니다. 마찬가지로, .ico, .css 등과 같은 원치 않는 파일을 라우팅하려고 시도했습니다.

파일 확장자 라우팅 예외가 발생했으나 .htaccess가 단일 파일에 대한 다시 쓰기 규칙을 무시할 수 없었습니다. file ajaxDispatcher.php.

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^/ajaxDispatcher.php$ $0 [L] 
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php?route=$1 [L] 

을 난 단지 ajaxDispatcher에 대한 라우팅 규칙을 무시 htaccess로받을 수 있나요 어떻게 내 코드가 서 어디 여기?

+0

가 ajaxDispatcher 라인을 제거하고 작동합니다 :

는 주문 것은 가장에 Serverfault에 설명 –

답변

5

당신은한다 RewriteCond 블록 위에 새 규칙을 이동해야합니다 :

RewriteRule ^/?ajaxDispatcher.php$ - [L] 

이 그렇지 않으면 RewriteConditions 더 이상 확장한다 RewriteRule을 포함하지 않는,있는 나는 그들이 의도하고 있다고 가정합니다.

RewriteCond %{SCRIPT_NAME} !ajaxDispatcher 

또는 최종 RewriteRule의 (?!ajaxDispatcher.php)에 주장으로 주입 :

또 다른 대안은 물론 다른한다 RewriteCond로를 돌고있다. https://serverfault.com/questions/214512/everything-you-ever-wanted-to-know-about-mod-rewrite-rules-but-were-afraid-to-as

2

!-f!-d 규칙으로 인해 실제로 표시된 파일에 대한 요청이 다시 작성 루크에서 제외됩니다. 표시된 코드에서 ajaxDispatcher.php 행을 제거하면 작동합니다.