我在风帆上建立一个应用程序,我正在使用angularjs。我的问题是每次刷新页面时都会显示找不到的页面。在apache中我可以使用这个htaccess修复它:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) /index.php/#/$1
</IfModule>
如何在帆上实现此功能
答案 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'});
...
}])