2013-08-18 2 views
0

그래서 내 웹 사이트에서 검색을 시도하고 URL을 쉽게 읽을 수 있도록 일부 텍스트를 인코딩해야합니다. 그러나 "<"기호가있는 항목을 검색하면 "<"이 인코딩되지 않아 HTTP 오류 403 (액세스가 금지됨)이 표시됩니다. 작업 URL의encodeURIComponent가 실패했습니다.

var search = $("#txtHomeSearch").val(); 

if(search != ""){ 
    var urlSearch = encodeURIComponent(search); 
    window.location.href = "/search&s=" + urlSearch; 
} 

예 : 깨진 URL의 http://website.com/search&s=helloword
예 :

내가 사용하고있는 코드입니다 http://website.com/search&s= <

아마 문제가 함께 내 .htaccess 파일 포함 :

RewriteEngine on 
RewriteRule ^([^.*]+)$ index.php?page=$1 [L] 
ErrorDocument 404 /errorPages/404.php 
+0

'<'는 URL의 특수 문자가 아니므로 인코딩 할 필요가 없습니다. – Barmar

+0

"<"가 내 URL에있을 때 HTTP 오류 403이 발생하므로 인코딩해야합니다. – JamesConnor

+0

어떤 서버를 사용하고 있습니까? – MasterAM

답변

0

여기에 간단한 유틸리티가 있습니다 : http://www.the-art-of-web.com/javascript/escape 다양한 자바 스크립트 이스케이프 기능의 작동을 확인합니다. ECMA 표준에 따라 해당 도구를 사용하여 확인한 후에는 "<"을 encodeURIComponent() 함수로 올바르게 이스케이프 처리해야합니다.

"<"이외의 문자가 문제의 원인 일 수 있습니까? encodeURIComponent misses 문자에 대한 다양한 해결 방법이 있습니다. 하나는 url_encode 함수이며 다른 곳은 여기에 나열되어 있습니다. javascript window.location do I need to escape?

+0

다른 문자로 인해 문제가 발생하지 않습니다. 이 작동 ... "http : // localhost/search & s = helloworld"및 "http : // localhost/search & s = <"작동하지 않습니다. – JamesConnor

0

[B] 플래그를 사용하여 역 참조를 이스케이프 해보세요.

RewriteEngine on 
RewriteRule ^([^.*]+)$ index.php?page=$1 [B,L] 
ErrorDocument 404 /errorPages/404.php 
관련 문제