在SailsJS上刷新时找不到页面

时间:2014-06-08 04:45:57

标签: angularjs .htaccess sails.js

我在风帆上建立一个应用程序,我正在使用angularjs。我的问题是每次刷新页面时都会显示找不到的页面。在apache中我可以使用这个htaccess修复它:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)       /index.php/#/$1 
</IfModule>

如何在帆上实现此功能

2 个答案:

答案 0 :(得分:0)

我有a possible solution to this on another question,基本上是您发布的mod_rewrite代码段的Sails控制器版本。

答案 1 :(得分:-2)

我发现有两种方法可以做到这一点。

单一入口点

此方法更易于维护,但可能并不适用于所有人。如果您有多个angularjs应用程序,则必须使用第二种方法或混合方法。

如果您希望使用单个angularjs入口点,并且您可以将其置于子路径中,则可通过以下设置轻松实现:

config/routes.js中添加单一的全能路线:

//wildcard catchall for angularjs entrypoint.
'/app/*': 'AngularController.index',

并拥有一个如下所示的angularJS app.js:

.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
    $routeProvider.when('/app/user', {templateUrl: '/angular/application/views/settings/user.html', controller: 'settingsUserCtrl'});
    $routeProvider.when('/app/tags/:tagId', {
        templateUrl: '/angular/application/views/tags/tag.html',
        controller: 'tagListCtrl',
        reloadOnSearch: true
    });
    $routeProvider.otherwise({redirectTo: '/app/user'});
    ...
}])

现在在指向/ app / anything的浏览器上加载页面。它加载AngularJS索引页面,此时AngularJS ngRoute插件加载正确的内容。

多个入口点/ Sails控制器

config/routes.js中,您可以添加多个匹配Sails控制器的路由,这些路由将与AngularJS应用/控制器匹配

'/user/*': 'UserController.index',
'/tag/*': 'TagController.index',

并在角度app.js中使用以下内容

.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
    $routeProvider.when('/user', {templateUrl: '/angular/application/views/settings/user.html', controller: 'settingsUserCtrl'});
    $routeProvider.when('/tags/:tagId', {
        templateUrl: '/angular/application/views/tags/tag.html',
        controller: 'tagListCtrl',
        reloadOnSearch: true
    });
    $routeProvider.otherwise({redirectTo: '/app/user'});
    ...
}])