Currently when I do
redirect 301 "abc" "abc.hml"
, the second URL is also redirecting tohttp://example.com/abc.html/def.html
.
A diretiva mod_alias Redirect
é o prefix matching , o que explica seu redirecionamento indesejável.
Mas também não misture redirecionamentos de mod_alias (por exemplo, RedirectMatch
e Redirect
) e mod_rewrite (ou seja, RewriteRule
). Como eles são módulos diferentes, eles são executados em momentos diferentes (geralmente mod_rewrite primeiro), independentemente da ordem aparente, então você pode acabar com conflitos confusos.
Tente o seguinte na configuração do seu servidor, para internamente reescrever /abc
to /abc.html
RewriteRule ^/abc$ /abc.html [L]
No entanto, você terá problemas se /abc
for um diretório físico no sistema de arquivos, já que mod_dir normalmente tentará "consertar" o URL adicionando uma barra. Então, você precisaria tornar a barra final opcional:
RewriteRule ^/abc/?$ /abc.html [L]
Além disso, desative MultiViews
se já estiver ativado:
Options -MultiViews
MultiViews
(parte de mod_negotiation) faz o mesmo tipo de coisa (reescreve internamente /abc
to /abc.html
ou /abc.php
ou o que achar) mas executará antes mod_rewrite recebe um chance.