Eu tenho um site com um CMS que usa mod_rewritepara fazer com que os URLs pareçam mais limpos. Anteriormente, os URLs limpos tinham a extensão .htm, mas eu quero fazer a transição para eles, aparecendo como subdiretórios falsos, ou seja:
http://www.example.com/pagename/
Eu tenho duas regras de reescrita para reescrever o esquema antigo e o novo potencial:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+).htm$ index.php?page=$1 [QSA]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ index.php?page=$1 [QSA]
Meu problema é que a regra que tentei usar para redirecionar URLs antigas para novas não faz nada.
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+).htm$ $1/ [R=302,NC,QSA]
Respostas:
1 para resposta № 1Você não pode usar duas regras com o mesmo padrãocomo somente o primeiro deles será aplicado. Tente substituir sua regra de "reescrita" pela nova regra de "redirecionamento" para redirecionar os URLs antigos, em vez de apenas reescrevê-los:
# redirect foo.htm to foo/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+).htm$ $1/ [R=301,NC]
# rewrite foo/ to index.php?page=foo
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ index.php?page=$1 [QSA]