2012-12-18 4 views
2

오후 숨어 해시,htaccess로와

는 브라우저의 URL 필드에이 마지막 주소를 표시하지 않는 동안 http://example.com/index.php#portfoliohttp://example.com/portfolio 같은 htacces 리디렉션 뭔가 규칙을 넣을 수 있습니까?

나는

질문 여부에 관련이있을 수 있습니다 .. 네가가 서버에 전송하지 않고,이 추악한 URL을 마스크하는 방법의 일종이 있어야 알고 있지만, 나는 다음과 같은 한 jQuery 코드

if(history.pushState){ 
    history.pushState(null,null,'#'+$(this).attr('class')); 
}else{ 
    location.hash = '#'+$(this).attr('class');} 
} 

if(window.location.hash){ 
    var hash = window.location.hash.substring(1); 
    if(jQuery.browser.webkit){ 
     $('html,body').animate({scrollTop:$('#'+hash).offset().top-2*88},'slow'); 
    }else{ 
     $('html,body').animate({scrollTop: $('#'+hash).offset().top-3*88-10},'slow');} 
    } 
} 

미리 감사드립니다.

답변

2

가 나는 네가가 서버에 전송되지 않습니다 알고 있지만

가 없다 이러한 추한 URL을 마스크하는 방법의 일종 ..이 있어야합니다. "브라우저에서 마스킹"한다는 것은 브라우저가 요청한 URL이 서버의 끝에서 엉망이되었음을 전혀 알지 못한다는 의미입니다. 그것은 http://example.com/portfolio을 요청했고 그것이 주소창에 표시되는 것입니다.

브라우저에서 #portfolio 조각을 숨기려면 조각이 완전히 쓸모 없게됩니다. 클라이언트와 서버 사이의 단 하나의 엔티티 인 브라우저는 서버가 그 부분을 숨기고 있기 때문에 보이지 않습니다. 프래그먼트에 대한 사용이없는 서버는 브라우저에서이를 숨 깁니다. URL을 숨기는 일종의 프레임이나 주소 표시 줄의 내용을 변경하는 자바 스크립트 속임수없이 주소 표시 줄에 표시되는 URL과 다른 URL을 브라우저에로드 할 수 없습니다.

서버가 내부적으로 /portfolio에서 /index.php#portfolio으로 재 작성하면 조각이 즉시 삭제됩니다. index.php를 실행하면 브라우저 만이 조각에 관심을 가지기 때문에 index.php가 존재하는지 알 수 없습니다.

URL에 단편을 원하지 않으면 콘텐츠가 어떻게 전달되고 있는지 다시 고쳐야합니다.

+0

나는 의심 스럽지만 ... 해시 중 #을 빼내고 첫 번째 슬래시를 모두 해시 한 후 고려할 수 있습니까? –

+0

@AfonsoGomes 브라우저 측면에서 스크립트에 따라 다릅니다. jQuery에 대해 많이 알지는 못하지만 위의 코드를 변경하여 첫 번째 슬래시를 모두 확인하십시오. 단편은 한 페이지에서 동시에 실행되는 다른 스크립트가 서로 통신하여 페이지에서 다른 것을 손상시킬 수있는 것입니다. –

관련 문제