2017-11-18 16 views
0

지연 성로드로 각도 어플리케이션을 배치했습니다. Github.io 도메인에서 호스팅 할 때 응용 프로그램이 완벽하게 작동하지만 mobaxterm을 사용하여 tomcat 서버에 응용 프로그램을 배포 할 때 오류가 발생합니다. 페이지가 다시로드되거나 새로 고침되면 앱에서 라우팅 상태가 사라지고 404 오류가 발생합니다.404 Tomcat 서버에 배포 된 각도 (v4 +)에 대한 새로 고침 오류

HTTP 상태 404 -/조회

유형 상태 보고서

메시지/메시지 요청한 리소스를 사용할 수없는

설명입니다. 내가 페이지를 새로 고침 한 후 이동 한 응용 프로그램을 사용하지 않는 경우

아파치 톰캣/7.0.72

콘솔 로그 http://appv2.proctur.com/enquiry/addEnquiry

http://appv2.proctur.com/enquiry/addEnquiry 404 (찾을 수 없음) 탐색을 GET :: 그 문제는 새로 고침 할 때 이해할 수 없습니다.

PS ::이 바보 같은 실수를 저에게 알려 주시면 Tomcat 서버에서 앵귤러 어플리케이션을 호스팅하는 것은 처음입니다.

더 명확히하기 위해 모듈을 지연로드하는 곳에서 routing.module.ts를 추가합니다. 이것은 app.module.ts ::

으로 가져옵니다.
import { NgModule } from '@angular/core'; 
import { RouterModule } from '@angular/router'; 

@NgModule({ 
imports: [ 
    RouterModule.forRoot([ 
     { path: '', redirectTo: '/authPage', pathMatch: 'full' }, 
     { path: 'authPage', loadChildren: 'app/components/auth-page/auth-page.module#AuthPageModule' }, 
     { path: 'course', loadChildren: 'app/components/course/course.module#CourseModule' }, 
     { path: 'enquiry', loadChildren: 'app/components/enquiry/enquiry.module#EnquiryModule' }, 
     { path: 'student', loadChildren: 'app/components/students/student.module#StudentModule' }, 
    ]) 
], 
exports: [ 
    RouterModule 
] 
}) 
export class AppRoutingModule { 
} 
+0

어떤 라우팅 모드를 사용하고 있습니까? 'html5'와 같은가요? 'hashbang'? 당신의 URL에'#/#! '이 보이지 않습니다. –

답변

0

각도 앱로드 첫 URL이 서버에서 제공 될 때. 페이지를 탐색 할 때 클라이언트 측에서 처리합니다. 페이지를 새로 고침하면 요청이 서버 (바람둥이 또는 노드)로 이동합니다. 라우트 된 URL은 서버에 존재하지 않습니다. 404 오류가 발생합니다. 당신은 HashLocationStrategy로 해결할 수 있고, 라우팅 설정에서 {useHash : true} 객체를 추가했습니다.

RouterModule.forRoot(routes, {useHash: true}) 

자세한 내용 : - https://codecraft.tv/courses/angular/routing/routing-strategies/#_hashlocationstrategy

0

이전의 대답은 정확하지만 우리가 정말 우리의 URL-S에 해시가 필요하지 않습니다. 문제는 다음과 같습니다. 예를 들어 '/ users/all'이라는 경로가 있고 앱의 '/'에서 경로를 탐색하면 Angular의 라우터가 경로를 확인하고 경로를 표시합니다. 우리가 그 경로에 직접 가면, 예를 들어 브라우저의 주소 표시 줄에 url을 입력하면 404가 표시됩니다. 이유는 무엇입니까? 귀하의 서버 (귀하의 경우에는 바람둥이)가 '사용자'라는 폴더와 그 안에 'all'파일을 찾으려고 시도하기 때문에 실제로는 존재하지 않습니다. 내부의 실제 파일이 아닌 단지 각도 경로이기 때문에 분명히 존재하지 않습니다. 서버의 시스템 그러나 서버를 올바르게 구성 할 수 있습니다.이 경우 응용 프로그램이 포함 된 index.html 파일로 폴백되므로 페이지가 올바르게 표시됩니다 (이 예에서는 서버가 index.html을 반환하고 각도 응용 프로그램은 실행 및 해결). 자세한 내용은 here을 참조하십시오.