4
respostas

Como funcionar rotas do angular no apache2?

Gostaria de saber como faz para funcionar as rotas do angular no apache2, habilitei o mod_rewrite do apache, criei o arquivo .htaccess, mesmo assim não funciona deve sempre esta colocando o caminho completo.

Sempre que carrega a pagina fica localhost invés de localhost/minhapagina.

4 respostas

Rotas do Angular são processadas no lado da aplicação (browser) e não no lado do servidor.

Todavia, o que seu servidor apache precisa fazer é redirecionar sempre para index.html para qualquer URL que ele não encontrar, inclusive em situações de erro. Isso só é exigido se você estiver usando o HTML5Mode. Se desligar, não precisará fazer isso.

Sim, mas estou querendo utilizar com HTML5Mode, se possível.

Então, você precisa criar redirecionar sempre para index.html para qualquer acesso feito ao seu apache, exceto para API's. Só assim o HTML5Mode funcionará.

Sobre como configurar o apache,

https://stackoverflow.com/questions/22739455/htaccess-redirect-for-angular-routes/22740184#22740184

Eu não configuro nunca o apache diretamente em minhas aplicaçõess Node.js, então tem que saber um pouco sobre o htaccess file.

A síntese desse post é o este arquivo:

# If an existing asset or directory is requested go to it as it is
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^ - [L]

# If the requested pattern is file and file doesn't exist, send 404
RewriteCond %{REQUEST_URI} ^(\/[a-z_\-\s0-9\.]+)+\.[a-zA-Z]{2,4}$
RewriteRule ^ - [L,R=404]

# otherwise use history router
RewriteRule ^ /index.html

Aplicações SPA são muito mais complexas do que aplicações web tradicionais e requerem mais configurações, por exemplo, esta que você acabou de ver. Algo que não seria necessária em uma aplicação não-spa.