Eu tenho um EC2 na AWS. Configurado o servidor (Apache 2, PHP 7.0, ...), habilitado mod_rewrite. Eu fiz esse processo muitas vezes antes, mas nunca no Ubuntu 16.04.
Afinal, testando meu servidor, observei:
Exemplo:
Isso NÃO FUNCIONA:
<IfModule mod_rewrite.c>
SetEnv HTTP_MOD_REWRITE On
AcceptPathInfo On
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^dieta/([\w-]+)?/?([\w-]+)?/?$ dieta.php?usuario_id=$1&dieta_id=$2 [L,QSA]
RewriteRule ^diario/([\w-]+)?/?([\w-]+)?/?$ diario.php?usuario_id=$1&data_registro=$2 [L,QSA]
RewriteRule ^diario-fisico/([\w-]+)?/?([\w-]+)?/?$ diario-fisico.php?usuario_id=$1&data=$2 [L,QSA]
RewriteRule ^treino/([\w-]+)?/?([\w-]+)?/?$ treino.php?usuario_id=$1&treino_id=$2 [L,QSA]
</IfModule>
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascri$
</IfModule>
Neste exemplo:
www.link.com/dieta/50/20 < - Como deve ser, não funciona.
www.link.com/dieta.php/50/20 < - Obras.
Isso é TRABALHANDO :
AddDefaultCharset utf-8
Options +FollowSymLinks
<IfModule mod_rewrite.c>
SetEnv HTTP_MOD_REWRITE On
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)?/?([\w-]+)?/?$ index.php?class=$1&action=$2 [L,QSA]
</IfModule>
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascri$
</IfModule>
www.link.com/index.php/user/get < - Works.
Casos:
Eu configurei o seguinte: