2014-03-04 4 views
0

문제를 지적하면서 Backbone.js에 간단한 라우터를 설치하고있었습니다. 오랫동안 봤는데 몇 가지 해결책을 찾았습니다.백본 라우터 : hashbangs 사용

문제는 내가 URL을 탐색 할 때마다이 URL이 응용 프로그램 내부에있는 동안 작동하지만 한 번 북마크하고 반환하면 해당 페이지가 존재하지 않기 때문에 명백히 404를 반환한다는 것입니다.

Backbone.history.navigate('test', true); 

이 큰 인 http://www.domain.com/test로 이동하지만, 같은 URL을 새로 고침 일단은 404

특정 .htaccess 파일을 사용하여 작업이 얻을 수있는 방법이있다 반환하지만 I 기존 웹 사이트에서 이걸 만들면 사용할 수 없어요.

Backbone.js에서 hashbangs를 사용하는 방법으로 되돌릴 수 있습니까? 그러면 내 URL은 다음과 같이 보일 것입니다. 'http://www.domain.com/#!/test 이 URL은 가장 깨끗한 URL이 아니지만 적어도 작동 할 수 있습니다.

아니면 여기에 분명한 내용이 있습니까? 내가이 문제를 가진 유일한 사람 일 수는 없다. 당신이 2 주 옵션을 가지고 있도록

답변

1

당신은 당신의 URL에 따라 pushState을 사용하고 있습니다 :

hashbang를 사용하는 것과 것 백본 역사를 (시작시 정지 SEO를 제외하고, pushState를 사용
  • 당신이 SEO에 대해 관심이없는 경우)
  • 은 당신의 서버는 캐치를 가질 수 있습니다, 두 번째 경우에는()이 될 수 있습니다 앱이 생성하는 모든 URL에 대한

을 똑같은 페이지를 페이지를 반환 한 모든 규칙은 항상 반환됩니다 (예 :). 백본 앱이 포함 된Backbone의 히스토리를 시작하면 URL에서 lokk하고 적절한 페이지로 이동합니다 ("이중 렌더링"효과가있을 수 있음).

SEO가 걱정되면 SEO 용 페이지 콘텐츠를 백본 앱과 함께 반환해야합니다.

+0

세 번째로 더 복잡한 옵션은 PhantomJS를 사용하여 서버에서 백본 앱을 렌더링하고 클라이언트에게 전송하는 것입니다. – Bojangles

+0

저는 실제로 서재응에 대해 걱정하지 않고 실제로 모든 데이터가 포함 된 정적 사이트를 제공하고 있습니다. 백본을 사용하여 그것을 긁어 모으고 있습니다. 내가 더 걱정하는 것은 방문자가 URL을 북마크 할 수 없다는 것입니다. 'pushState'를 제거함으로써 해시를 대신 사용합니다. 정확히 원하는 것입니다! –

+0

@Bojangles 좋은 제안이지만 슬프게도 내 사이트에서 저를 그렇게 허락하지 않습니다. –