2012-04-27 8 views
1

아마도 내가 불가능한 일을 시도하고 있거나 완전히 분명한 것을 놓치고 있습니다. 나는 그러나 /\?를 사용하여 ? 탈출 시도mod_rewrite를 사용하여 다시 작성한 URL에 물음표를 포함하십시오.

^/report/user?(.*)$ ./report/user.php?userid=$1 [L,NC] 

그 발생 및 내부 서버 오류 :

는 내가 뭘 원하는 다음 다시 작성합니다.

이것을 달성 할 방법이 있습니까?

+0

사용할 수 ([0-9a-zA-Z]+)에 '% {QUERY_STRING}의 마지막 부분을 변경 문자열이지만 오류가 다른 것일 수 있습니다. 나머지 수업은 무엇입니까? – craniumonempty

+0

내가 가지고있는 유일한 재 작성 규칙은 그 것입니다. 그래서 무엇이든 작동합니다 : – lethalMango

+0

'RewriteRule' _pattern_은 쿼리 문자열을 제외하는 URL 경로와 일치합니다. – MrWhite

답변

2

어쩌면 당신은 시도 할 수 있습니다 :

이 사용자 ID는 영숫자
RewriteCond  %{QUERY_STRING} ^([0-9]+)$ 
RewriteRule  ^/report/user$ ./report/user.php?userid=%1 [L,NC] 

경우, 단지 쿼리를 얻을 수`RewriteCond

+0

아, 사용자 ID 만'?'뒤에 있는지 물어볼 생각조차하지 않았다. 그런 의미에서 더 의미가 있습니다. – craniumonempty

+0

질문의 코드가 어떻게 생겼는지 추측하는 것은 제 가정입니다. – jCoder

1

좋아, ?은 1 회 또는 0 회 정규식이므로 이 1 또는 0 번 있는지 묻고 다른 모든 것을 잡습니다. 당신은 (그리고 그냥 전송되지 않음) 다른 쿼리에 쿼리 문자열을 캡처 할 경우 시도 : 로컬 컴퓨터에서 테스트

RewriteRule ^/?report/user$ /report/user.php?userid=%{QUERY_STRING} [L,NC] 

이 ... ?a=1&b=2이 - ?userid=a=1&b=2 그래서 아마 당신이 원하지> 무엇을

그것이 쿼리 문자열에 대해 어떻게되는지는 확실하지 않지만 그것을 전송해야합니다. 어떤 모양인지 보려면 R 플래그로 시도해보십시오. 당신은 단순히 쿼리 문자열에 추가 할 경우에 당신은 시도 할 수 있습니다 :

RewriteRule ^/?report/user$ /report/user.php?userid=1 [L,NC,QSA] 

.. 쿼리 문자열을 로컬 컴퓨터에서 테스트 ?a=1&b=2 ->?userid=1&a=1&b=2

그냥하지 않는 쿼리를 변경하지 않고 위치를 변경 >?a=1&b=2

- QSA

RewriteRule ^/?report/user$ /report/user.php [L,NC] 

.. 로컬 컴퓨터에서 쿼리 문자열 ?a=1&b=2을 테스트 필요

http://htaccess.madewithlove.be/을 원하면 여기에서 다시 테스트 할 수 있습니다. 단지 한번 롤오버한다는 것을 기억하십시오. 따라서 기본적인 것들만 테스트 할 수 있습니다. 나는 QSA (쿼리 문자열 추가)이 둘 중 하나에서 프로그래밍 된 것으로 생각하지 않지만 여전히 괜찮은 도구라고 생각합니다.

관련 문제