2009-04-14 2 views
0

양식의 GET 데이터로 URL을 다시 쓰려고합니다. 영어 문자만으로 문자열을 커밋 할 때 잘 작동합니다. 그러나 노르웨이어 문자 (노르웨이어 페이지)를 작성하면 다시 작성되지 않은 URL 만 표시됩니다.양식 데이터 용 mod_rewrite 작성

RewriteCond %{REQUEST_URI} /resultpage.php$ 
RewriteCond %{QUERY_STRING} ^querystring=([a-zæøåäëöA-ZÆØÅÄËÖ0-9-\+]+)$ 
RewriteRule ^(.*)$ /sok/%1? [R=301,L] 
RewriteRule ^sok/(.*)$ /resultpage.php?querystring=$1&a=1 [L] 

내가 양식에서 게시하지의 URL에서 노르웨이어 문자를 사용하는이 위대한 작품 : 내 mod_rewrite 문장은 다음과 같습니다.

제안 사항?

답변

1

노르웨이어 문자는 URL로 인코딩 될 가능성이 큽니다.

Mod 재 작성이 어떻게 처리 할 것인지 문서에서 볼 수 없습니다. 는 URL 인코딩 된 확장 된 문자를 선택할 것으로 추측

RewriteCond %{QUERY_STRING} ^querystring=([a-zA-Z0-9-+%]+)$ 

에서

작동 할 수 있지만 그것은 어떤 문자, 당신이 원하는뿐만 아니라 세트를 허용합니다. 응용 프로그램 계층에서이 문제를 항상 해결할 수 있습니다.

RewriteCond %{REQUEST_URI} ^/resultpage\.php$ 
RewriteCond %{QUERY_STRING} ^querystring=([^&]+)$ 
RewriteRule ^resultpage\.php$ /sok/%1? [R=301,L] 

을 그리고 당신은 아직도 그것을 단순화 할 수 있습니다 :

1

내가 대신 [^&]을 사용

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /resultpage\.php\?querystring=([^&\s]+)\s 
RewriteRule ^resultpage\.php$ /sok/%1? [R=301,L] 

이 솔루션을 사용하면 당신도 멀리 두 번째 RewriteRulea=1 깃발을 떠날 수 있습니다.