HTML5 기반 충돌 w/각 UI-라우터 URL 라우팅
-
21-12-2019 - |
문제
가 Angular.js 웹 애플리케이션을 사용한 ui-라우(https://github.com/angular-ui/ui-router)w/병렬 이라는 전망 좋은:
.state(
'app.experience', {
url: 'e/:experienceId',
views: {
'center-pane@': {
templateUrl: 'partials/experience.html',
controller: 'ExperienceController'
}
})
을 사용할 수 있도록 설정했는데 HTML5 기반을 통해
$locationProvider.html5Mode(true);
면
http://www.mysite.com/e/123
요청 내 backend 돌려 보냅 index.html 루트 디렉토리에 있습니다.(당으로 사용 HTML5 기반에 angular.js 해)그러나,브라우저 수신 index.html 기 시작하는 모든 가 css/js 원에 대한 요청은
/e/js/script1.js
반대로
/js/script1.js
만 존재하는 루트에서 수준이다.그것은 기본적으로 루트 디렉토리 mysite.com/e/
(에서 요청한 url)및 실제근, mysite.com/
.
뭔가가 나는 누락까요?그것은 불가능을 사용하여 상대적 srcs 한 자바 스크립트와에서 css 로 index.html?
는 데 도움을 주셔서 감사합니다!
해결책
참고:당신과 같이 우리에게 당신의 방법 HTML 보이지만 기반으로 문제가 난다고 가정하고 당신은 당신 지 상대 url 을 사용하여 문서 루트입니다.
당신이 사용할 수 있는 상대적인 url 을 만들어야 될 상대 에 따라 문서 루트.
그래서 예를 들어,당신은 수도에서 다음과 같이 html
<img src="images/foo.jpg" />
정말 당신이 해야 그것은 이 방법이(통한의 시작은'/'slash)
<img src="/images/foo.jpg" />
이것은 뭔가 특정을련,그것은 html 것을 참조하십시오 이 답변 자세한 내용은.
이유는 당신의 브라우저를 사용하는 /e/
에 url 을하기 때문입 브라우저 실제로 요청한 리소스 /e/
에는 url 이 있습니다.브라우저를 알지 못하는 서버에 응답하지 않은 파일에 /e/
디렉토리에 있습니다.
따라서,당신은 상대 url 없이 슬래시 처음에는,그것은 것입니다 상대적인 경로 또는 원래 요청한 자원입니다.당신이 원하는 것은 상대 url 을 사용하 슬래쉬로 시작 부분에서.