2014-10-09 22 views
0

我的HTML5模式站點有一個404的狀態,除了來自/pages/的任何內容外,我們希望啓用這些狀態,因爲這些狀態是從服務器端CMS提供的 - Mezzanine-。有任何想法嗎?使AngularJS評估除「/ pages /」之外的所有路由

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

可能有重複的[this question。](http://stackoverflow.com/q/17407024/1375316) – threeve 2014-10-09 14:59:47

+0

@threeve不完全。這個問題不是主播,而是實際登陸這些/頁面。 – rebelliard 2014-10-09 15:02:12

+0

嘗試url:'/ pages /:pages' – 2014-10-09 15:52:55

回答

0

如果我的理解正確,那麼我認爲這需要在服務器端處理。我做了類似的事情,我只有幾個想要在服務器上呈現的網址,而其他所有網址都指向了index.html,這是我的角度應用所在的位置。

這可能很棘手,因爲您的靜態資源顯然需要在這些參數之外提供。

不知道你的堆棧在服務器上,我只能建議我使用的技術,這是我的角應用程序在'/',但角應用程序中的所有路由使用相同的前綴(在我的情況'/manage/*'

然後,在服務器端,/manage/*被重定向到index.html,然後一切是照常供應。

類似的,更容易出錯的解決方案可能會嘗試一切重定向除了資源你希望服務正常,對於Apache,.htaccess可能看起來像這樣:

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

我說這只是因爲你需要確保並保持更新,如果有任何其他資源,你將從你的域提供服務,或者至少確保你記得你在調試時做了什麼。

+0

必須要「管理」它所有的網址看起來有點煩人,我通常會做相反的事情,所以建立/ assets/*的忽略模式並放置所有需要的資源如果我有一套休息服務,我把它們放在/ api/*下,最後在所有其他路由之後,我將*路由到index.html,因爲它會評估這最後這個完美的作品。我相信大多數路由系統都是這樣工作的。 – Jens 2014-10-12 18:39:34