CodeIgniterを使用してPHPアプリケーションを構築しています。Let Me Google That For You
これは、テキスト入力ボックスに文章を書き込んで[送信]をクリックすると、結果を表示するURLに移動するのと似ています。URLは人間が編集でき、比較的単純なものにしたかったのです。私はCodeIgniterのURLルーティングを理解したので、今のところ私のURLは次のようになります。
http://website.com/?q=this+is+a+normal+url
現在の問題は、文に疑問符や円記号などの特殊文字が含まれている場合です。これらは両方とも私の現在の.htaccess
書き換えルールを台無しにしており、キャラクターがエンコードされている場合でも発生します。
http://website.com/?q=this+is+a+normal+url? OR
http://website.com/?q=this+is+a+normal+url%3F
動作するのはダブルエンコーディングです。たとえば、疑問符を取り、それをにエンコードするとし%253F
ます(ここで、?は%3Fにエンコードされ、%記号は%25にエンコードされます)。このURLは正しく機能します。
http://website.com/?q=this+is+a+normal+url%253F
誰かが私がここで何ができるかについての考えを持っていますか?入力を二重にエンコードする賢い方法はありますか?.htaccess
これを回避するための書き換えルールを作成できますか?私はここで途方に暮れています。これが私が現在みんなに使っている書き換えルールです。
RewriteEngine on
RewriteCond %{QUERY_STRING} ^q=(.*)$
RewriteRule ^(.*)$ /index.php/app/create/%{QUERY_STRING}? [L]
注:CodeIgniterが機能する方法は、index/application/function/parameter
URLが設定されていることです。現在、関数に完全なクエリ文字列をフィードしています。