Маршруты Angular.js не работают на WAMP
Я работаю над созданием одностраничного приложения Angular.js, созданного со стеком Express, Node, mySQL. Я установил следующий код для маршрутов:
angular.module('myApp', ['myApp.filters', 'myApp.services', 'myApp.directives']).
config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
$routeProvider
.when('/', {
templateUrl: 'partials/index',
controller: IndexCtrl
})
.when('/addPost', {
templateUrl: 'partials/addPost',
controller: AddPostCtrl
})
.when('/readPost/:id', {
templateUrl: 'partials/readPost',
controller: ReadPostCtrl
})
.when('/editPost/:id', {
templateUrl: '/partials/editPost',
controller: EditPostCtrl
})
.when('/deletePost/:id', {
templateUrl: 'partials/deletePost',
controller: DeletePostCtrl
})
.when('/todos', {
templateUrl: 'partials/todos',
controller: TodosCtrl
})
.otherwise({
redirectTo: '/'
});
$locationProvider.html5Mode(true);
}]);
Когда я захожу в свое приложение localhost: 3000 и затем нажимаю на ссылку для localhost: 3000 / todos, все работает, однако, когда я обновляю страницу, я получаю сообщение об ошибке «Cannot GET / todos». После некоторых исследований я обнаружил, что проблема заключается в том, что при обновлении сервер пытается загрузить / todos и, поскольку ресурс не существует, возникает ошибка. Похоже, решение состоит в том, чтобы настроить mod_rewrite для перенаправления любой страницы в индекс, чтобы angular мог правильно ее направить.
Поэтому я позаботился о том, чтобы mod_rewrite не передавался в httpd.conf, и обновил следующий раздел:
<Directory />
AllowOverride all
Order Allow,Deny
Allow from all
</Directory>
Затем создал файл .htaccess в моем корневом каталоге с помощью app.js. Внутри файла .htaccess, который я создал, я добавил следующий код:
<IFModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.*)$ '/'
</IFModule>
Затем я перезапустил apache и нажал обновить на localhost: 3000 / todos и получил то же самое сообщение «Cannot GET / todos». Что я здесь не так делаю?
Некоторые мысли у меня есть
Я не знаю, в какой каталог поместить .htaccess, поэтому я просто положил его в корень.Я не уверен, что '/' является правильным местом для отправки пользователя, я хочу, чтобы он пошел в индекс, но так как у меня есть только файл index.jade внутри /public/index.jade, мне интересно, нужно ли мне указать на это как-то, но расширение нефрита кажется неправильным.Собирается ли написанное мной RewriteRule для перехода пользователя на целевую страницу или на правильную страницу, которую он обновил / добавил в закладки, т. Е. Обновляет на localhost: 3000 / todos должен перенести вас на страницу задач, а не на домашнюю страницу?