2013-10-14 3 views
1

나는 내 응용 프로그램에 대한 몇 가지 경로가 있습니다AngularJS와 라우팅 및 HTML5

$routeProvider. 
      when('/user', {templateUrl: 'user/partials/userlist.html', controller: 'userListController'}). 
      when('/user/:userName', {templateUrl: 'user/partials/userdetail.html', controller: 'userDetailController'}). 
      when('/group',{templateUrl: 'group/partials/grouplist.html', controller: 'groupListController'}). 
      when('/group/:groupName', {templateUrl: 'group/partials/groupdetail.html', controller: 'groupDetailController'}). 
      when('/category',{templateUrl: 'category/partials/categorylist.html', controller: 'categoryListController'}). 
      otherwise({redirectTo: '/user'}); 

응용 프로그램의 루트/관리자/나는 내 htaccess로 너무 사이트가 보이는 index.html을 위해 기본값으로 설정되어 : www.domain.com/admin/#/user/username ... 등 ... HTML5 이외의 버전

모든 것이 정상적으로 작동합니다. HTML 5를 켜면 즉시 www.domain.com/user/로 리디렉션되며 물론 작동하지 않습니다. 내 라우팅 공급자에게 내 모듈의 루트가/admin /이라는 것을 어떻게 알릴 수 있습니까?

는 편집 : 내 index.html을 머리 태그의 마지막 줄에 <base href="/admin/"></base>을 지금은 제대로 www.domain.com/admin/ 리디렉션 www.domain.com/admin에 갈 때 :

나는 추가 사용자 목록과 사용자 목록 템플릿이 사용됩니다. 그러나 직접 www.domain.com/admin/user로 이동하면 페이지를 찾을 수없는 오류가 발생합니다. 나는이 부분은 내 기본 재 작성 규칙과 관련이있다 궁금해하기 시작 했어 :

RewriteRule ^$ index.html 

편집 :

그래입니다. 그것을 알아 냈다. 다시 쓰기를 완전히 꺼내서 기본 리다이렉트에서 사용자로 리디렉션 한 다음 작동하는 userdetail로 이동했습니다. 그러나/user 또는 다른 경로를 입력해도 작동하지 않습니다 ... html5에서만 작동하는 것처럼 보입니다. 응용 프로그램 자체에서 탐색을 수행하면 다른보기로 직접 이동할 수 없습니다. 예를 들어 그룹으로 직접 가려고 할 때 작동하지 않습니다.

따라서 색인을 다시 작성하는 재 작성 규칙이 없으며 사용자 기본 경로가 작동하고 그룹 및 카테고리는 다시 작성되지 않습니다.

편집 :

다음은 내가 찾은 것입니다. 기본 index.html 인 $ location.html5mode (true) 세트를 다시 작성하지 않아도 www.domain.com/#/user/ 또는 www.domain.com에 입력 한 페이지로 이동할 때만 작동합니다. /#/그룹. URL을 www.domain.com/user 또는 www.domain.com/group으로 즉시 다시 씁니다. 그러나 www.domain.com/user로 직접 이동하려고 시도하면 작동하지 않습니다. 분명히, 다시 쓰기 규칙은 경로 처리를 담당하는 프런트 엔드이므로 여기서는 도움이되지 않습니다.

각도 라우팅에 대한 표준 동작입니까?

EDITED

솔루션에 추가 :

당신에게 besure, 하위 디렉토리로 리디렉션 장소에 추가 경로가있는 경우 중 하나 [END] 태그를 사용하거나 디렉토리 모드 - 재 작성이 꺼져 있는지 확인하거나 재 작성 후 다시 일반 규칙을 처리하고 모든 항목이 색인으로 리디렉션됩니다.

+2

index.html 페이지에서 기본 href 설정을 시도 했습니까? –

+0

그렇지 않으면 리디렉션이 고정되었지만 이제는 다른 모든 것이 손상됩니다. – Snowburnt

+1

'$ locationprovider.html5mode (true)'? –

답변

1

내가 볼 수 있듯이 사람들은 루트 URL로 이동할 때 AngularJS HTML과 JS 만 제공한다는 문제가 있습니다. 서버는 단지 www.domain.com/으로 보이는 해시를 볼 수 없습니다. 그러나 Angular가 모든 작업을 수행하는 것처럼 들리므로 이와 같은 와일드 카드 경로를 고려해야합니다.

RewriteRule ^.*$ index.html 

에 상관없이 당신이 AngularJS와이 나머지를 할 수 있도록 AngularJS와 및 라우팅을로드 브라우저에 index.html를 반환합니다 www.domain.com/ 후 어떤 콘을 확인하지 않습니다.

나는 여기서 무슨 일이 일어나고 있는지 오해하고 있지 않는 한, 이것이 당신의 문제라고 확신합니다.

+0

여분의 디렉토리를 잡아라. – Snowburnt