Qual é a melhor opção ao tentar fazer com que example.com/about mostre example.com/about.html e sem alterar o URL para /about.html. No momento, estou tentando o código a seguir, ele apenas retorna um erro 404.
RewriteRule ^/about$ https://example.com/about.html [R=301,L]
Editar #1 paraw3dkAtualmente tenho multiviews ativados, mas ainda recebo um erro 404. Aqui está minha configuração atual no VirtualHost
<Directory /var/www/public_html>
Options All +MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
Responder1
Em vez de usar mod_rewrite parareescrever internamentea solicitação, você poderia simplesmente usar MultiViews (mod_negotiation):
Options +MultiViews
mod_rewrite permite que você faça uma reescrita de URL mais complexa; no entanto, se tudo o que você estiver fazendo for remover a extensão do arquivo, o MultiViews será suficiente - é para isso que foi projetado.
Quando você faz uma solicitação para /about
(um URL/arquivo sem extensão em um diretório válido), com MultiViews habilitado, mod_negotiation irá procurar um arquivo que corresponda ao tipo MIME esperado e retorná-lo como uma solicitação interna.
ATUALIZAR:
Options All +MultiViews
Esta não é uma sintaxe válida (presumo que você deva estar no Apache 2.2, pois isso falharia com um erro durante a inicialização do Apache 2.4). Como observado noDocumentos do Apache:
Aviso
MisturarOptions
com a+
ou-
com aqueles sem não é uma sintaxe válida e provavelmente causará resultados inesperados.
Para expressar All
e MultiViews
você precisaria de duas diretivas:
Options All
Options +MultiViews
All
é o padrão (no Apache 2.2), então isso pode não ser necessário. No entanto, seria preferível especificar apenas as opções necessárias numa única directiva, por exemplo:
Options FollowSymLinks Includes MultiViews
Responder2
você pode tentar assim: acho que vai funcionar
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^about$ https://example.com/about.html [R=301,L]
Você também pode usar o redirecionamento:
Redirect 301 /about http://example.com/about.html
Redirect 301 /any_dir/about http://example.com/about.html