2010-07-28 4 views
0

Apache의 RewriteEngine을 사용하여 /fooindex.php?x=foo으로 다시 작성하지만 /foo/bar에서 index.php?x=foo&bar=true까지를 RewriteRule으로 다시 작성하는 방법은 무엇입니까?/foo를 index.php로 다시 작성하는 방법 x = foo뿐만 아니라 /foo/bar에서 index.php로? x = foo & bar = true 하나의 RewriteRule에서?

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)? index.php?x=$1 [L,NC] # rewrites /foo to index.php?x=foo, but not /foo/bar to index.php?x=foo&bar=true 

이는 index.php?x=foo/foo를 다시 작성 있지만 /foo/bar-index.php?x=foo&bar=true :

지금이 있습니다. RewriteRule에 어떻게 추가 할 수 있습니까?

+0

일반적인 질문은 하나의 RewriteRule에서 두 번 다시 쓰는 방법입니다. – Sudoman

+1

간단히 말하면 하나의 RewriteRule로 두 번 다시 쓰기를 수행 할 수 없습니다. –

+0

그럼 어떻게할까요? 'RewriteCond'를 망치지 않고 두개의'RewriteRule'을 사용할 수 있습니까? – Sudoman

답변

2

는이 규칙을 시도해보십시오

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 
RewriteRule ^([^/]+)$ index.php?x=$1 [L] 
RewriteRule ^([^/]+)/([^/]+)$ index.php?x=$1&$2=true [L] 

첫 번째 규칙은 요청 된 URI는 기존의 파일이나 디렉토리에 매핑 할 수있는 경우 중단하는 것입니다. 그렇지 않으면 다른 두 규칙은 요청 된 URI 경로와 일치하는 규칙이 하나라도 있으면 테스트되고 적용됩니다.

관련 문제