私のhtaccessでは、クリーンURLを作成するために検索ページのルールを書き換えています。RewriteRuleはエンコードを防止します
オリジナルURL:
http://www.example.com/index.php?keyword=apple
のRewriteRule:
RewriteRule ^keyword/([A-Za-z0-9-]+)/?$ index.php?keyword=$1
クリーンURL:
http://www.example.com/keyword/apple
私は外国の文字を入力しない限り、完璧に動作します。私は
http://www.example.com/keyword/değişmek
を記述する場合たとえば、私は手紙GとSは外国の文字であるため、理にかなっていること404を得ます。それらはコード化されなければならない。しかし、そのキーワードを元のURLに書き込むと、
http://www.example.com/index.php?keyword=değişmek
が動作します。私は結果を得る。また、ユーザーがクリーンURLの入力検索で入力したものをエンコードしようとしました
var url = encodeURIComponent($("#search-input").val());
window.location.href = "http://www.example.com/keyword/"+ url ;
console.log(url);
が動作しませんでした。私は404を得る。私はconsole.logをチェックし、ユーザー入力はコード化されている。したがって、私は書き換えが符号化の問題を引き起こすと思います。だから、私はエンコーディングに関連するいくつかのフラグを追加しようとしました。
RewriteRule ^keyword/([A-Za-z0-9-]+)/?$ index.php?keyword=$1 [NE]
RewriteRule ^keyword/([A-Za-z0-9-]+)/?$ index.php?keyword=$1 [B]
RewriteRule ^keyword/([A-Za-z0-9-]+)/?$ index.php?keyword=$1 [NE,B]
が機能しませんでした。どんな勧告?
それは動作しません