2009-04-14 6 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フラグを残すことができます。

関連する問題