Rotas Angular.js que não funcionam no WAMP
Estou trabalhando na configuração de um aplicativo de página única Angular.js criado com uma pilha Express, Node, mySQL. Eu configurei o seguinte código para as rotas:
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);
}]);
Quando vou ao meu aplicativo localhost: 3000 e, em seguida, clico em um link para localhost: 3000 / todos, tudo funciona; no entanto, quando atualizo a página, recebo o erro "Não é possível obter / todos". Após algumas pesquisas, descobri que o problema é que, quando você atualiza o servidor, tenta carregar / todos e, como o recurso não existe, ele erros. A solução parece ser configurar o mod_rewrite para redirecionar qualquer página para o índice, para que o angular possa rotear corretamente.
Portanto, certifiquei-me de que o mod_rewrite não seja confirmado no httpd.conf e atualizei a seção a seguir:
<Directory />
AllowOverride all
Order Allow,Deny
Allow from all
</Directory>
Em seguida, criei um arquivo .htaccess dentro do meu diretório raiz com app.js. Dentro do arquivo .htaccess que criei, adicionei o seguinte código:
<IFModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.*)$ '/'
</IFModule>
Então reiniciei o apache e pressionei refresh no localhost: 3000 / todos e recebi a mesma mensagem "Não é possível obter / todos". O que eu estou fazendo errado aqui?
Alguns pensamentos que tenho são
Não sei em qual diretório colocar .htaccess, então apenas o coloco na raiz.Não sei se '/' é o local correto para enviar o usuário, quero que ele vá para o índice, mas como só tenho um arquivo index.jade dentro de /public/index.jade, estou me perguntando se preciso de alguma forma, mas a extensão jade parece errada.O RewriteRule que escrevi levará o usuário à página de destino ou à página correta que eles atualizaram / marcaram, ou seja, atualizar no localhost: 3000 / todos deve levá-lo à página de todos, não à página inicial