1

저는이 문제에 대해 지금까지 연구 해왔다. 유사한 몇 가지 stackoverflow 토론을 들러 왔지만 아무도이 질문에 만족하지 못했습니다. . angularjs가 이것을 할 수있는 방법이 있는지 확실하지 않지만, angularjs SPA 응용 프로그램을 작성할 때 이것을 수행 할 수있는 방법이 있다고 확신합니다. 여기 내 상황이 다가옵니다.AngularJs SPA에서 내 URL에서 ".html"을 제거하려면 어떻게합니까?

기존 ASP.NET MVC 기반 응용 프로그램에 대한 AngularJs 프런트 엔드를 작성하고 있습니다. 현재 응용 프로그램의 URL이

https://domain.com/login 
https://domain.com/profile 
https://domain.com/settings 

모습 등

나의 새로운 프론트 엔드 버전은

내가 들이게 제거해야, 내가 함께 필요

https://domain.com/index.html/login 
https://domain.com/index.html/profile 
https://domain.com/index.html/settings 

문제가 읽고 새로운 URL에서. 이것이 내 첫 번째 장애물이다. 나중에해야 할 일은 URL이 읽는 방식에 따라 다릅니다. ASP.NET MVC에서 제공하는 형식으로 읽어야합니다. URL에 .html 파일 확장자가없는 URL.

"angularjs url remove html and #!"이라는 키워드를 사용하여 Google 검색을 시도했습니다. 내가 할

상단이 결과는 내 상황을 해결하는 데 도움이 조용 어느 것도

Removing the fragment identifier from AngularJS urls (# symbol)

How to remove index.html from url on website based on angularjs

있습니다.

내 NG 뷰가있는 본질적으로이 페이지 내 SPA 아키텍처를 구동하는 경우에 Index.html이기 때문에 "

될 것이라고이 작업을 수행하는 더 좋은 방법이없는 경우 내가 고려하고 해결 방법이 있으므로,이 내 IIS에 넣고 Index.html을 기본 문서로 설정할 수 있습니다. "이 기능은 내가 원했던 (URL의".html "을 표시하지 않음) 특정 정도까지 달성하는 데 도움이됩니다. 예를 들어 (로컬로 작업 할 때) http://localhost으로 이동하면 URL에 파일 이름이 표시되지 않고 index.html이 열리고 angularJs 라우팅은 해당 URL을 새로 고치거나 복사하지 않는 한 계속 작동합니다 (index.html)에서 404 오류가 발생하는 경우 ($ locationProvider.html5Mode (true)를 사용하여 #을 제거 할 때) 오류가 발생합니다.

URL을 가진 사용자가 응용 프로그램의 특정 부분에 액세스하는 데 필요한 전자 메일을 보낼 때 반드시 거기에 index.html을 포함시켜야하기 때문에 이것은 이상적인 솔루션은 아닙니다 (우리는 원하지 않습니다)

도움을 주시면 매우 감사하겠습니다. 감사.

답변

0

서버 측 문제이지만 cliend 측이 아닙니다. 당신이 https://domain.com/를 방문 할 때

handle '/' 
    return view 'index.html' 

그런 다음, 당신이 index.html 파일을 볼 수 있지만, URL에 표시되지 않습니다 :이 같은 서버 측에서 요청을 처리해야합니다.

편집

당신은 당신이 더 복잡한 라우팅을하여야의 각도 HTML5 모드를 사용하는 경우,이 같은 일이 :

handle '/' 
handle '/login' 
handle '/profile' 
handle '/settings' 
    return view 'index.html' 

때문에 예를 들어, 당신은 URL에 있습니다 : https://domain.com/profile 당신은 새로 고침 페이지에서 요청이이 URL로 전송되므로 '/profile' 페이지도 처리하고 동일한 index.html 페이지를 반환해야합니다 (그러면 angularjs가 라우팅에 신경을 씁니다)

(210)

당신이

+0

감사 Karaxuna. 불행히도 이것은 백엔드를위한 MVC WebApi 기반 REST 서비스를 사용하는 새로운 애플리케이션 인 angularjs에 의해 구동되는 순전히 프론트 엔드 프레임 워크입니다. '보기를 반환하는 서버 측 코드가 없습니다 (우리가 MVC 웹 응용 프로그램 또는 제안한 것처럼) – Suri

+0

정적 파일 호스팅 서버가 있습니까? 아니면 ftp입니까? 내가 말한대로 요청을 처리해야합니다. 다른 방법은 없습니다 (내가 아는 한) – karaxuna

+0

angularjs에서 html5 모드를 사용하는 경우 더 복잡한 라우팅이 필요합니다 – karaxuna

0

당신은 당신의 Web.config에서 URL 재 작성 규칙을 작성할 수 있습니다 충분합니다 당신이 https://domain.com/#/profile 페이지를 새로 고침 할 때 다음 요청이 https://domain.com/'/' 경로 처리기로 전송됩니다 해시 (#)를 사용하는 경우 :

관련 문제