2013-03-21 3 views
1

url이 index.php로 리디렉션되는 작은 라우팅 구조를 만들기 위해 htaccess 파일을 설정했습니다. 사용자가 "/ admin"을 입력 한 후 아무 것도 입력하지 않으면 url이 admin.php로 리디렉션되는 예외를 추가하고 싶습니다.특정 폴더 예외가있는 htaccess

htaccess로 -

RewriteEngine On 
RewriteBase/
RewriteRule ^admin/?(.*)$ admin.php?page=$1 [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php [L] 

예 : http://mysite.com/about/은 (여기 매개 변수를 사용하지 않는)의 index.php로 연결되어야하는 동안 http://mysite.com/admin/settings/이 admin.php로 연결되어야 페이지 = 설정. Regexp는 실제로 여러 가지 조건이 고려되는 경우 특히 차 한잔하지 않습니다. 아이디어?

편집 :^admin/([^ /] *) /? 그것을 해결했다.

답변

1

당신은 루트 디렉토리에 하나 개의 .htaccess 파일에서 이것을 시도 할 수 있습니다 : 영구적으로 리디렉션에 대한

Options +FollowSymLinks -MultiViews 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_URI} !admin\.php [NC] 
RewriteRule ^admin/([^/]*)/? /admin.php?page=$1 [NC,L] 

RewriteCond %{REQUEST_URI} !/admin/  [NC] 
RewriteRule .*    /index.php  [NC,L] 

로] L [NC]을 교체 [R = 301, NC, L]

+0

사용^admin/([^ /] *) /? 트릭을 했어. 감사. 나는 NC와 L을 언제 사용해야하는지 아직 정확하게 파악하지 못했다. 나는 여전히 admin.php를 다시 쓰기 위해서만 L을 사용하는데, 잘 동작하는 것처럼 보인다. –

+1

당신은 오신 것을 환영합니다. * [NC] 플래그를 사용하면 RewriteRule이 대소 문자를 구분하지 않고 일치합니다. *. 그래서 그것을 사용하는 것이 중요합니다. 자세한 내용은이 [link] (http://httpd.apache.org/docs/2.2/rewrite/flags.html#flag_nc)를 확인하십시오. –

관련 문제