/ / Mod_rewrite .htm para o subdiretório falso - apache, .htaccess, mod-rewrite

Mod_rewrite .htm para o subdiretório falso - apache, .htaccess, mod-rewrite

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 № 1

Você 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]