문제는 애플리케이션이 서버 파일 시스템의 실제 리소스에 대한 실제 경로 인 것처럼 URL을 처리하는 서버 환경에서 제공된다는 사실에서 기인합니다. 따라서 하나의 페이지에있는 경우 ui-router
이 내부적으로 처리하므로 결과적으로 404
또는 403
개의 오류가 발생하지 않으므로 다른 상태 URL로 이동할 때 다시로드되지 않습니다. 그러나 처음 페이지를로드 할 때 서버를 찾고 있으며 찾으려는 리소스가 없거나 금지되어 있기 때문에 404
및 403
오류가 발생합니다.
파일 (예 : css 및 js 파일)을 참조하지 않을 때 index.html
페이지를 타겟팅하도록 서버 측 환경을 구성하면 모든 URL이 index.html
페이지의 URL로 끝납니다 ui-router가 처리 할 수 있습니다. 각 서버 측 기술 (Apache, IIS, node.js 등)은이를 처리하는 다른 방법을 갖지만 대개 URL 재 작성 모듈과이를 처리하는 유사한 방법이 있습니다.
또한 URL과 같은 해시를 사용하여 문제가되지 않는 경우을 사용 중지하여 ui-router
이 그런 일을하지 못하게 할 수 있습니다. 당신은 당신의 .config
에 $locationProvider
를 주입 등처럼 사용하지 않도록 설정하여이를 달성 할 수 있습니다 : 예를 들어 $locationProvider.html5Mode(false);
:
angular.module('myApp', ['ui.router'])
.config(function ($stateProvider, $locationProvider) {
$stateProvider
.state('home', {
url: '',
templateUrl: 'views/home.html',
controller: 'HomeCtrl'
})
.state('about', {
url: '/about',
templateUrl: 'views/about.html',
controller: 'aboutCtrl'
});
$locationProvider.html5Mode(false);
});
수정. 그렇다면 ui-sref를 사용할 때 해시가 URL의 일부분이되도록 어떻게 렌더링해야합니까? 수동으로 URL을 해시로 입력하면 정상적으로 작동합니다. – KingKongFrog
@ KingKongFrog가 이전 댓글에서 질문에 대답하고 대답을 업데이트했습니다. –