2016-11-21 14 views
1

後、私は、次の.htaccessファイルを持っているURLエンコードしてください。 http://foo.com/somethingを開くと、http://www.foo.com/somethingにリダイレクトされます。これは、somethingurl encoded文字が含まれている場合を除いてうまく動作します。は.htaccessの書き換え

http://www.foo.com/bar/file-with-%3F-in-nameを開いた場合、REQUEST_URI/bar/file-with-%3F-in-nameです。私はhttp://foo.com/bar/file-with-%3F-in-nameを開くと

、しかし、%3FをエンコードされたURLが書き換え中に?にデコード、およびREQUEST_URIQUERY_STRING-in-name/bar/file-with-となっています。

URLエンコードされた文字が書き換え中にデコードされないようにするにはどうすればよいですか?

私はBNEフラグを使用してみましたが、運がありませんでした。ここで

答えて

1

はあなたの問題を解決するルールのバージョンです:

# Rewrite www. 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteCond %{THE_REQUEST} \s/+(\S*)\sHTTP 
RewriteRule^http://www.%{HTTP_HOST}/%1 [L,R=301,NE] 
  • トリックは、それがApacheのでデコードされる前にTHE_REQUEST変数からのリクエストURIをつかむことです。
  • NEはまだそれは私のミス以前私が正しく質問を解釈していなかったということでした%253F

になって%3Fを避けるために必要とされます。