URLs semânticos para arquivos HTML estáticos com .htaccess e mod_rewrite
-
26-09-2019 - |
Pergunta
mod_rewrite sempre me confunde ... Alguém pode me dizer as regras de que preciso para obter os seguintes URLs limpos? URL desejado à esquerda, URL real à direita.
/our-work/ => /our-work.html
/our-work/some-project/ => /our-work/some-project.html
/contact/ => /contact.html
Como você pode ver, eu quero forçar barras à direita em todos os URLs também.
Obrigado!
Solução
Experimente esta regra:
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+)/$ $1.html [L]
E para adicionar barras à direita:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .*[^/]$ %{REQUEST_URI}/ [L,R=301]
Certifique -se de colocar as regras que causam um redirecionamento externo (usando explicitamente R sinalização ou implicitamente) na frente das regras que causam apenas um redirecionamento/reescrita interna. Então, neste caso:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .*[^/]$ %{REQUEST_URI}/ [L,R=301]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+)/$ $1.html [L]
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow