2017-09-15 5 views
-1

단일 페이지 응용 프로그램 및 angularjs와 관련된 간단한 문제를 해결하려고합니다. 분명히 내가 이것을 어떻게 든 쉽게 실천할 수 있어야합니다.비 기본 URL에서 angularjs 응용 프로그램 시작

처음으로 단일 페이지 앱이 어떻게 작동하는지 생각해보십시오. 루트에 index.html 파일이 있고 그 안에 other.html이있는 other라는 하위 폴더가 있다고 가정 해 보겠습니다. 브라우저에서 mysite.com/을 실행하면 기본적으로 index.html이 제공되며 모든 것이 올바르게 작동합니다. mysite.com/other/other.html을 실행하면 other.html이 실제 파일이고 지원되는 리소스 파일 등이 모두 포함되어 있기 때문에 정상적으로 작동합니다.

이제 단일 페이지 각도 응용 프로그램을 생각해 봅시다. UI 라우터. 나는 경로를 만든다 : 주 = other, url =/other 그리고 template = other/other.html 컨트롤러가 부착 된

나는 mysite.com을 시작한다. 그것은 각도 index.html 파일을로드하고 홈 페이지를 예상대로 가져옵니다. 그런 다음 브라우저로 이동하여 mysite.com/#/other를 입력하면 예상대로 other.html 페이지가 올바르게로드됩니다.

mysite.com/other에 직접 앱을 시작하려는 경우 문제가 발생합니다. 내가 처음 만나는 문제는 다른 디렉토리가 있어도 index.html이없고 other.html 파일이 템플릿이기 때문에 앱을 실행하는 데 필요한 리소스가로드되지 않기 때문입니다.

어떤 식 으로든 서버는 각도 응용 프로그램의 끝에 리소스 파일 이름이없는 URL을 index.html을로드하고 각도 라우터가 실제 페이지를 제공해야한다는 것을 알아야합니다.

나는 당신이 url mysite.com/other를 요구할 때 index.html를 돌려 보내는 것을 서버와 함께 시도해 보았다. 이것은 각도 응용 프로그램을로드하는 데 성공하지만 놀랍게도 mysite.com/other는 이제 mysite.com/other#/를 URL에 표시합니다. 다른 말로하면 이제는 다른 URL을 기본 URL의 일부로 취급하므로 다른 페이지를 표시하려면/other (즉, mysite.com/other#/other)를 다시 입력해야합니다.

기본 태그와 html5mode를 사용하여 다양한 실험을 시도했지만 여전히 적절한 해결책을 찾을 수 없습니다.

+0

짧은 것을 무엇으로 여기에서 수행하려고합니까? mysite.com/other를 mysite.com/#/other로 리디렉션 하시겠습니까? – yesIcan

+0

의미에서 예. 사용자가 mysite.com/other 링크를 저장 한 다음 대부분의 웹 사이트에서 할 수있는 것처럼 해당 페이지로 앱을 시작할 수 있기를 바랍니다. – smjhunt

+0

이것을 시도하십시오 https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/creating-rewrite-rules-for-the-url-rewrite-module – yesIcan

답변

0

나는 해결책을 찾은 것 같습니다. 기본 URL을 /로 설정하고 html5 모드를 켭니다. 끝에 (즉, 확장자 없음) 파일이없는 요청에 대해 index.html을 반환하도록 서버를 구성해야합니다.