2014-10-09 59 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