2011-10-11 4 views
0

내가 해시 변경 내용 추적을 위해 벤 Almans 플러그인을 사용하고 있습니다 :AJAX SEO - 뒤로 및 앞으로 버튼

http://benalman.com/projects/jquery-hashchange-plugin/

또한

당신이 www.mysite.com/test1를 입력 할 때, PHP와 함께 문자열을 잡고 있도록 내 웹 구성을 수정 한 test1 값을 JavaScript로 전달합니다. JavaScript는 AJAX를 통해 스크립트를 보내고 테스트 1 페이지을 반환합니다.

그리고 주소 표시 줄에 www.mysite.com/test1을 쓰는 모든 사용자는 테스트 페이지이됩니다. 모든 것이 정상입니다.

지금. www.mysite.com을 입력하면 색인 페이지 만 표시되고 test1 페이지에 대한 링크가 있습니다. 이 버튼을 누르면 주소 www.mysite.com/#test1이되고 그 때문에 # 해시 변경 플러그인을 사용하면 뒤로 버튼을 누르면 AJAX를 사용하여 다시 불러올 수 있습니다.

내가 원하는 건 그러한 해시 변경 플러그 - 인이나 그 방법이 없거나 시스템에 # 기호가 필요하지 않다는 것입니다. 왜냐하면 사용자는 www.mysite.com/test1과 같은 깨끗한 주소를 볼 수 있기를 원합니다.

그럴 수 있습니까?

답변

0

그건 불가능합니다. #은 위치의 해시 부분에 대한 접두사입니다. 해시는 대개 서버로 보내지지 않으므로 해시를 변경해도 페이지 요청이 발생하지 않습니다.

샤프 (즉, # 문자의 이름)를 생략하면 페이지 요청이 시작됩니다. 당신이 SEO URL의를 원하는 경우에

, 나는이 "

<script> 
$(document).ready(function(){ 
    var base_url = location.protocol + "//" + location.host + "/"; 
    $("a[href^='+base_url+']").bind("click", function(ev){ 
     location.hash = $(this).href.substr(base_url.length) 
     ev.preventDefault(); 
    }) 
}); 
</script> 
<a href="http://www.mysite.com/test1">Link</a> 

이것은 기본 URL로 시작하는 href 속성, 문서의 각 <a> 요소에서 onclick을 바인딩 사용하는 것이 좋습니다.

+0

죄송하지만이 방법은 내게 적합하지 않습니다. 사용자가 링크를 누르면 링크 값을 가져 와서 아약스를 통해 php로 전달한 다음 jquery를 사용하여 일부 페이지를 다시 가져옵니다. 해당 페이지로 phisually 이동하지 않습니다. – David

+0

내 대답 정장 당신의 방법. 당신은 "물리적으로"같은 페이지에 머물러 모든 링크를 'hashChange' 이벤트가 발생하지만 JS를 비활성화 한 사용자는 링크를 계속 탐색 할 수 있습니다. 해시가 변경되면 페이지가 언로드되지 않습니다. –

+0

뒤로 및 앞으로 누른 버튼을 캡처하는 방법은 무엇입니까? – David

관련 문제