/ / .htaccess: reescrever .htm urls internamente para .php, mas também redirecionar URLs .php para .htm - apache, .htaccess, mod-rewrite

.htaccess: reescrever .htm urls internamente para .php, mas também redirecionar .php para .htm - apache, .htaccess, mod-rewrite

Eu tenho um site php. Para todos os links de páginas eu uso foo.htm, e internamente reescrevo isso para foo.php com .htaccess:

RewriteRule ^(.*).htm$ $1.php [NC,L]

Isso funciona muito bem - no entanto, ainda permite que vocêpara usar o URL foo.php. Eu gostaria de 301 redirecionar foo.php para foo.htm para evitar que qualquer resultado antigo do mecanismo de busca foo.php fique por perto e reescreva a URL foo.htm internamente para foo.php

Eu não consigo descobrir como fazer isso sem criar um loop.

Respostas:

0 para resposta № 1

Coloque este código no seu arquivo .htaccess:

Options +FollowSymlinks -MultiViews
RewriteEngine on

RewriteCond %{THE_REQUEST} ^GETs(.+).php [NC]
RewriteRule ^ %1.htm [R=301,L]

RewriteRule ^(.*).htm$ /$1.php [L,NC]

0 para resposta № 2
RewriteRule ^(.*).htm$ $1.php [NC,L]
RewriteRule ^(.*).php$ $1.htm [NC,R]

a opção L pára o mecanismo de reescrita, impedindo um loop.