2012-10-12 2 views
18

배포 할 웹 디렉토리 경로에서 추출되는 방식으로 Angular.js 응용 프로그램을 개발할 수 있습니까?Angular.js의 하위 디렉토리에 라우팅

웹 서버 하위 디렉토리 http://example.com/myproject/에 Angular.js 앱을 넣으려고하는데 라우터가 나를 웹 서버 루트 인 http://example.com으로 리디렉션합니다.

var myproject = angular.module('myproject', []); 

myproject.config(function($routeProvider, $locationProvider) { 
    $routeProvider. 
    when('/', {templateUrl: 'partials/index.html', controller: IndexCtrl}). 
    otherwise({redirectTo: '/'}); 

    $locationProvider.html5Mode(true); 
}); 



function IndexCtrl($scope, $location) { 

} 
+1

더하기 사용자 이름 : – silver

답변

25

<head></head><base href="/sudirectory"/>을 설정 해보 :

다음은 내 Angular.js 응용 프로그램입니다. 그것이 내가 일하기 위해해야 ​​할 일이다. IIRC

주의 : 이것은 href = "#"가있는 앵커 태그를 엉망으로 만들뿐만 아니라 이미지 srcs 등의 루트 역할을한다.

+0

그 트릭을 했어! 고마워. – sssilver

+5

잠재적으로 도움이 될 수있는 또 다른 팁 : 을 설정 한 후 라우터 부분 템플릿 리소스에 대해 절대 대신 상대 경로를 사용하는 것을 잊지 마십시오. – sssilver

+1

상대 경로에서 작동하지만 'getSomething /'으로 지정되는 AJAX 호출은 '/ getSomething /'으로 설정해야합니다. 다른 경로 정보가있을 수있는 URL에 추가되기 때문에 필요합니다. 그것. 나는 AJAX 호출을 'mydomain/getSomething /'로 결정하려고하지만, Angular 라우터가 'mydomain/article/1 /'에 나를 추가하면 추가됩니다. 글로벌 base_url 변수를 만들고 모든 AJAX URL 앞에 추가 할 수 밖에 없었습니다. Angular 내에서 이것을 config로 설정하는 것이 좋겠지 만 운 좋게 프로젝트는 단지 손으로 할 정도로 작습니다. –

관련 문제