Estou executando o Linux Mint 21.3 Cinnamon e instalei o XAMPP 7.4.33 porque quero testar um aplicativo web usando uma versão específica do PHP. O XAMPP instala o Apache, é claro, e a primeira coisa que quero fazer é fazer a Alias
diretiva funcionar.
O XAMPP instala /opt/lampp/
e dentro há um diretório htdocs
e aqui dentro, eu criei um diretório chamado alias-test
, e então 2 subdiretórios chamados old
e new
.
Então a estrutura é assim...
/opt/
lampp/
htdocs/
alias-test/
old/
new/
test.html
Neste ponto, com o Apache em execução, posso navegar até http://localhost/alias-test/old/ e http://localhost/alias-test/new/ e, como esperado, em ambos os casos, obtenho uma listagem gerada pelo Apache dos arquivos nesses diretórios – ou seja, o diretório "antigo" aparece vazio, e posso ver o arquivo "test.html" dentro do diretório "novo".
Agora, o que eu quero alcançar é conseguir navegar para http://localhost/alias-test/old/test.html e para o Apache carregar o arquivo /opt/lampp/htdocs/alias-test/new/test.html
. Então /opt/lampp/htdocs/alias-test/
eu criei um .htaccess
arquivo e coloquei isso dentro...
Alias /alias-test/old /opt/lampp/htdocs/alias-test/new
Agora, se eu navegar até http://localhost/alias-test/old/test.html, recebo um erro do Apache:
Erro no servidor!
O servidor encontrou um erro interno e não conseguiu concluir sua solicitação. Ou o servidor está sobrecarregado ou houve um erro em um script CGI.
Se você acha que isso é um erro do servidor, entre em contato com o webmaster.
Erro 500
localhost
Apache/2.4.54 (Unix) OpenSSL/1.1.1s PHP/7.4.33 mod_perl/2.0.12 Perl/v5.34.1
Então, o que está acontecendo? O que eu negligenciei para fazer esse exemplo mínimo viável funcionar?
Como administrador de servidor, quando você se depara com erros de servidor, o primeiro lugar a ser considerado é olhar os logs no servidor . O Apache e outros servidores web geralmente registram o motivo pelo qual responderam com um erro específico.
Neste caso, a razão do erro pode ser encontrada na seção de contexto da
Alias
diretiva,Como
.htaccess
não está listado na seção de contexto, aAlias
diretiva simplesmente não é permitida em um.htaccess
arquivo.Adicione o
Alias
no seu httpd.conf principal e/ou o snippet de configuração do VirtualHost que está incluído no seu httpd.conf e ele funcionará conforme o esperado.Apesar do que muitas pessoas continuam repetindo: você não precisa usar arquivos .htaccess.
Eles são o último recurso, nunca a primeira escolha quando você tem direitos de administrador/root, porque eles vêm com penalidades de desempenho .
A recomendação do projeto Apache é: