2014-10-09 1 views
0

내 HTML5 모드 사이트는 서버 측 CMS에서 제공되는 /pages/에서 오는 것을 제외하고는 활성화하려는 404 상태를 가지고 있습니다. 중 이층-. 어떤 아이디어?AngularJS가 "/ pages /"의 경로를 제외한 모든 경로를 평가하도록하십시오.

$stateProvider 
    .state('app.404', { 
     url: '*path', 
     views: { 'main': { templateUrl: '/static/app/views/404.html' } } 
    }) 
+0

가능한 [이 질문.] (http://stackoverflow.com/q/17407024/1375316) – threeve

+0

의 가능한 복제 @ 세 가지. 문제는 앵커가 아니지만 실제로 이러한 페이지에 착륙하는 것입니다. – rebelliard

+0

URL 시도 : '/ pages/: pages' –

답변

0

제대로 이해한다면 서버 측에서 처리해야한다고 생각합니다. 나는 서버에서 렌더링하고 싶었던 몇 가지 URL 만 있고, 다른 모든 URL은 기본적으로 index.html에있는 것과 같습니다. 내 각도 앱이있는 곳입니다.

정적 리소스가 분명히 이러한 매개 변수 외부에서 제공되어야하기 때문에 까다로울 수 있습니다.

스택이 서버에 무엇인지 모르는 상태에서 내 각도 앱을 '/'에두고 사용했던 기법을 제안 할 수 있지만 각도 앱의 모든 경로에 동일한 접두어를 사용하도록했습니다 (내 경우 '/manage/*'. 그런 다음

는 서버 측에서, /manage/*은 index.html을 리디렉션되고 다른 모든 평소 역임했다.

유사한 많은 오류가 발생하기 쉬운 솔루션은 자원을 제외한 모든 리디렉션하려고 할 수 아파치의 경우 .htaccess는 다음과 같이 보일 수 있습니다 :

RewriteEngine On 
RewriteCond %{REQUEST_URI} !^js|css|img|templates|static|pages 
RewriteRule .* index.html 

도메인에서 제공하는 다른 리소스가 있는지 확인하거나 디버깅 할 때 수행 한 작업을 기억하는지 확인해야하므로 오류가 발생하기 쉽습니다. .

+0

모든 URL을 "관리"해야하므로 일반적으로 반대가되므로/assets/*에 대한 패턴을 무시하고 필요한 모든 자산을 넣습니다. 서버 아래에서 제공되는 것처럼, 만약 내가/api/* 아래에 그들을 올려 놓은 휴식 서비스 세트를 가지고 있다면, 마침내 다른 모든 경로를 따라 index.html로 라우팅합니다. ... 평가할 때 이 마지막이 완벽하게 작동합니다. 그리고 나는 대부분의 라우팅 시스템이 그렇게 작동한다고 믿습니다. – Jens