내 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
. 예를 들어, 내가 의미가 문자 G 때문에 외국 문자들입니다 (404)를 얻을 수
http://www.example.com/keyword/değişmek
물품. 인코딩해야합니다. 그러나 해당 키워드를 원래 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를 얻는다. 나는 콘솔을 점검했다. 로그와 사용자 입력은 암호화된다. 따라서 rewriterule이 인코딩 문제를 야기한다고 생각합니다. 그래서 나는 인코딩과 관련된 몇 가지 플래그를 추가하려고 시도했다.
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]
작동하지 않았습니다. 어떤 추천?