2010-07-19 2 views
0

어떻게 자동으로             company.com/en/ #services
에     company.com/en/ services/
에서 자바 스크립트
와 브라우저 address bar에서 url를 대체?
예 : I는 브라우저의 주소 표시 줄의 URL company.com/en/services/에 입력하고 클릭하면 자동으로 company.com/en/#services

을 보일 것이다, '실행'을 어떤 방식이 있나요 실제 URL/서비스 /를 브라우저 새로 고침 및 리디렉션없이 해시 url/# 서비스로 대체 하시겠습니까? jQuery에 대한 해결책이 있습니까?브라우저 주소 표시 줄의 'url'을 JavaScript로 자동 바꾸는 방법 :/en/services/to/en/# services?

+0

해쉬'#'는 페이지 URL에 특별한 기능을 가지고 있기 때문에 페이지를 새로 고치지 않고는이 작업을 수행 할 수 없습니다. 너가 원하는게 그거야? –

답변

3

현재 페이지의 자바 스크립트로 URL을 변경할 수 없습니다. 당신은 (새로 고침없이)이 같은 해시를 변경할 수 있습니다 : 당신이 페이지 company.com/en/에있어 다음 뭔가를 클릭하면

window.location.hash = '#services'; 

그래서, 당신은 다음 window.location.hash을 설정할 수 있습니다. 예를 들어 company.com/en/#anything_you_set으로 변경할 수 있습니다. 유일한 다른 방법은 Pekka가 제안하고 페이지를 다시로드하는 작업을 수행하는 것입니다.

URL을 입력하고 해시로 변경하려면 URL Rewriting (적어도 ASP.NET 및 IIS의 경우)을 찾아야합니다. IIS7을 사용하는 경우 URL Rewrite Module을 사용할 수 있습니다.

아파치를 사용중인 경우 this URL rewrite tutorial을 읽을 수 있습니다.

+1

또는 company.com/en/services /가 액세스 될 때 'company.com/en/# services' URL로 HTTP 301 리디렉션을 보내도록 서버를 구성 할 수 있습니다. –

+0

@ abhin4v : 대부분의 브라우저는 해시로 리디렉션을 지원하지 않습니다. 따라서 사람들은/en /에서만 끝나게 될 것입니다. –

0

당신은 같은 것을 할 수있는 :

$(document).ready(function() { 
    window.document.location.href = 'company.com/en/#services' 
}); 
0

내가 함께 갈 것 :

<script> 
document.replace("/en/#services"); 
</script> 
<meta http-equiv="refresh" content="0;url=/en/#services" /> 

Document.replace (URL) /en/services/에 브라우저가 새로운로드가됩니다 페이지에 저장되며 이전 버전은 기록에 포함되지 않으므로 사용자가 다시 조회하면 루프에 걸리지 않습니다. 메타는 JS가없는 사람들을 잡는다.

많은 브라우저 (및 HTTP 사양)가 해시 클라이언트 측만을 고려하므로 서버 쪽 리디렉션으로는이 작업을 신뢰할 수 없다고 생각하지 않으므로 리디렉션에서 살아남지 못합니다. .

관련 문제