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!

Foi útil?

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
scroll top