2009-08-27 2 views
0

site.com/link?p=2바꾸시겠습니까? 이미 변경 한 경우에도 RewriteRule의 요청과

는 $ _GET 줄 [ 'P'] == 2

site.com/link

site.com/index.php?page=link 그래서

에 다시는, 내가 & 페이지를 site.com/link로 = 2

을 site.com/link?p=2 을 대체하기 위해 노력하고있어
RewriteEngine on 

RewriteRule (.*)\?(.*) $1\&$2 

RewriteCond %{REQUEST_URI} !\....$ 
RewriteRule ^(.*)$ /index.php?p=$1 

작동하지 않습니다!

답변

3

RewriteRule 왼쪽의 쿼리 문자열 (? 및 그 이후의 항목)을 볼 수 없습니다. URL의 경로 부분에서만 일치합니다.

그러나 좋은 소식은, 당신은 아마 할 필요는 이것이다 :

RewriteEngine on 

RewriteCond %{REQUEST_URI} !\....$ 
RewriteRule ^(.*)$ /index.php?p=$1 [QSA] 

QSA 옵션은 쿼리 문자열 추가, (그것을 대체하는 대신 쿼리 문자열에 기본을 추가 할 RewriteRule의 지시 행동, 의심 할 여지없이 전체 문제를 자극).

+0

감사! 왜 그런지 알아? –

+0

확실한 것은 아니지만, mod_rewrite의 설계자는 쿼리 문자열을 다시 작성하는 것이 불가결하다는 생각이 들지 않으면 서 이미 충분히 혼란 스럽다는 것을 느꼈을 것입니다. 반면에 실제로는 쿼리 문자열을 다시 작성하는 것은 거의 필요하지 않습니다. 어쨌든이를 수신하는 스크립트가 임의로 재 해석 할 수 있기 때문입니다. – chaos

관련 문제