2017-11-08 7 views
0

URL 앞에 cms/을 추가하여 사용자 끝 페이지와 백엔드 페이지를 분리하려고합니다. 내 .htaccess 파일은 다음과 같습니다.두 개의 디렉토리에서 RewriteRule

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?url=$1 [NC] 
RewriteRule ^cms/(.*)$ cms/index.php?url=$1 [NC] 

내 디렉토리는 다음과 같습니다 : 내 외부 index.php에서

> Project 
    > cms 
     index.php 
     cms_page1.php 
     cms_page2.php 
    > pages 
     page1.php 
     page2.php 
     page3.php 
.htaccess 
index.php 

내가 알에게 URL 매개 변수 url에 의해 pages 폴더에있는 페이지를 포함한다. 사용자 끝 페이지 용입니다. 나는 인덱스 페이지에서 모든 페이지의 스타일과 탐색 기능을 가지고 있기 때문에이 작업을 수행하고 있습니다. cms 폴더의 페이지에 대해 동일한 작업을 수행하려고합니다.

내가 www.mysite.com/cms/으로 갈 때, 예상했던 것처럼 cms 디렉토리의 색인 페이지로 이동합니다. 하지만 www.mysite.com/cms/cms_page1으로 가면 외부 인덱스 파일로 이동하고 해당 파일의 url 매개 변수는 cms/cms_page1입니다. 하지만 내가 원하는 것은 cms/index.php?url=cms_page1이므로 index.php을 cms 디렉토리에 열고 cms_page1 페이지를 포함합니다.

답변

0

왜 이런 일이 발생하는지 잘 모르겠습니다. enable logging을 통해 URL 재 작성 방법을 확인할 수 있습니다.

나는 규칙의 순서와 관련이 있으며, 특정 규칙이 일치하면 중단하지 않는다고 생각합니다.

이 시도 :

RewriteRule ^cms/(.*)$ cms/index.php?url=$1 [L,NC] 
RewriteRule ^(.*)$ index.php?url=$1 [NC] 

L 플래그 stops any other rules being applied 추가.