2009-04-26 1 views
0

모든 디렉토리에 plopped했을 때 Just Work (TM)을 사용해야하고 루트에 있지 않을 경우 하위 디렉토리에 프로젝트가있을 때 제대로 작동하는 것으로 보이는 REST 프레임 워크가 있습니다. 몇 가지 예제 디렉토리가 있습니다.아파치 재 작성 규칙 redux

/ 
/project1 
/bingo/project2 
/hoopla/doopla/minor/project3 

미세이 작품의 모든 프로젝트가 루트 디렉토리에 실행할 때 나는 "funnies"*을 받고 있어요 제외 (비트 열심히 설명하기, 내 생각,하지만 두 번째 수준의 재 작성이 제대로 작동하지 않습니다). 다음은 일반적인 htaccess로 파일에서 내 시도는 다음과 같습니다

RewriteEngine On 
RewriteRule ^static/ - [L] 
RewriteCond %{REQUEST_URI} ^$ 
RewriteRule .* ./ [R,L] 
RewriteRule ^index.php - [L] 
RewriteRule (.*) index.php?q=$1 [QSA,PT] 

(그리고 그래, 모든 프로젝트는 재 작성 무시 하위 디렉토리 ./static이) 내가 달성하기 위해 노력하고있어 작업 재 작성 규칙의 집합입니다 대부분의 경우 (다시 말하면, 웹 서버가 서비스하는 디렉토리에서 프로젝트를 계획하는 것입니다). 나는 장거리 슛에 의해 재 작성 규칙 대단한 아니에요, 그리고 어떤 좋은 조언과 개는 주시면 감사하겠습니다. (나는 몇 가지 심각한 주스를 필요 그래, 난 너무 많은 소개 기사를 겪었어요.)

  • funnies에 대한 자세한 정보; 내 웹 서버는 docroot를/usr/share/apache2/default-site/아래에 있지만,/projects가 docroot의 하위 디렉토리가 아닌 다른 곳에서 가져온 규칙 집합 (/ home/user/프로젝트 /). 내가 갈 때,/projects 서브 디렉토리 목록을 얻었고 제안 된 재 작성 규칙으로 그 서브 디렉토리 중 하나가 호출되면 (restmapp) 나는 얻는다.

    요청한 URL /home/user/Projects/restmapp/index.php를이 서버에서 찾을 수 없습니다.

+1

'funnies'에 대한 추가 정보가 도움이 될 것입니다. –

+0

설명에 Funnies가 추가되었습니다. – AlexanderJohannesen

답변

0

이 규칙을 시도해보십시오

RewriteRule ^static/ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule .* index.php?q=$0 [L,QSA] 

편집 또한 당신은 요청/다시 내부적으로 리디렉션하는 방법을 참조하기 위해 외부 리디렉션을 강제하거나 logging feature of mod_rewrite를 활성화 R 플래그를 사용할 수 있습니다 .

+0

흠, 작동하지 않는 것 같습니다. 나는 약간의 혼란을 피하기 위해 index.php에 404를 얻었지만 올바른 경로가 명시되어있다. 재귀적인 것이 의심 스럽다. 그 중 하나 또는 내 설정에 다른 이상한 구성있어. 그래도 두 번 확인해 볼게. – AlexanderJohannesen

+0

디버깅에 대한 자세한 정보가 도움이 될 것입니다. – Gumbo