Eu encontrei este exemplo que deve fazer o truque:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]
Fonte:
Eu quero usar o .htaccess para reescrever as páginas web do php. Ou de uma maneira simples "Eu não quero usar a extensão .php" para acessar qualquer página da web.
arquivo .htaccess (Ubuntu 14) que estava funcionando perfeitamente:
RewriteEngine on
#remove the need for .php extention
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
O mesmo arquivo .htaccess não está funcionando após a atualização da AWS, que agora está no Ubuntu 16.04. Eu tentei de tudo, como alterar a permissão, habilitando o modo de reescrita, alterando a propriedade de diretório do arquivo de configuração de 'AllowOverride None' para 'AllowOverride All'.
Depois de algum tipo de experiência, descobri que estou corrigindo o arquivo .htaccess acima, e ele funcionou bem. Mas aqui ele sempre permite acessar apenas a página do php. Mas eu não quero ser específico com qualquer página php. Eu tentei escrever o regexp também, mas não funcionou. E sempre redireciona para a página especificada.
<IfModule mod_rewrite.c><
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
</IfModule>
Alguém pode me ajudar nisso? Agradecemos antecipadamente.
Eu estava enfrentando o mesmo problema, aqui está a solução para o ubuntu e o apache
Primeiro habilite a reescrita do módulo:
sudo a2enmod rewrite
E reinicie o apache
sudo systemctl restart apache2
Agora edite para o nível do diretório
sudo vim /etc/apache2/sites-enabled/000-default.conf
adicione essas linhas no final
<Directory /var/www/html>
AllowOverride All
</Directory>
e reinicie o apache novamente.
sudo service apache2 restart