2009-11-24 9 views
0

특정 패턴의 모든 URL을 PHP 파일로 리디렉션하는 규칙을 작성하고 싶습니다. 예외 : CMS가있는 control/ 디렉터리다시 쓰기 규칙이 작동하지 않습니다.

왜,

RewriteCond %{REQUEST_URI} ^/([^control]+)/([^/]+)$ 
RewriteRule .* /pages/index.php?language=%1&page=%2&%{QUERY_STRING} [L] 

domain.com/deutsch/start 

(그것은 404를 throw) 작동하지 않지만

RewriteCond %{REQUEST_URI} ^/([^control]+)/([^/]+)/debug$ 
RewriteRule .* /pages/index.php?language=%1&page=%2&page_debug=yes&%{QUERY_STRING} [L] 

작품

domain.com/deutsch/start/debug 
,369에 대한

?

+1

% {REQUEST_URI}! ^/control /? – Aif

+0

설명 된대로 두 번째 조건을 사용하여 계산됩니다. (나는 mod_rewrite에서 위대하지 않다). 감사! –

답변

1

당신은 두 가지 조건을 사용할 필요가 :

RewriteCond %{REQUEST_URI} !^/control/ 
RewriteCond %{REQUEST_URI} ^/([^/]+)/([^/]+)$ 
RewriteRule .* /pages/index.php?language=%1&page=%2&%{QUERY_STRING} [L] 

을하지만 경우에 가능한 RewriteRule 지시어에 직접 패턴을 사용한다 :

RewriteCond $1 !=control 
RewriteRule ^([^/]+)/([^/]+)$ /pages/index.php?language=$1&page=$2&%{QUERY_STRING} [L] 

또 다른 힌트 대신 QSA 플래그를 사용하는 것입니다 명시 적으로 쿼리를 추가 :

RewriteCond $1 !=control 
RewriteRule ^([^/]+)/([^/]+)$ /pages/index.php?language=$1&page=$2 [L,QSA] 
+0

고맙습니다. 위의 Aif의 의견을 바탕으로 해결했지만, 이는 차세대를위한 훌륭한 본격적인 답변입니다. –

+0

두 가지 방법이 성능 관점에서 바람직합니까? –

+0

@Pekka Gaier : 후자는 일치시킬'. * '테스트를 건너 뜁니다. – Gumbo

관련 문제