У меня EC2 на AWS. Настроил сервер (Apache 2, PHP 7.0, ...), включил mod_rewrite. Раньше я проделывал этот процесс много раз, но никогда в Ubuntu 16.04.
В конце концов, тестируя свой сервер, я заметил:
Пример:
Это НЕ РАБОТАЕТ:
<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>
В этом примере:
www.link.com/dieta/50/20 <- Как Должно быть, не работает.
www.link.com/dieta.php/50/20 <- Работает.
Это РАБОТАЕТ:
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 <- Работает.
Кейсы:
Я настроил следующее:
https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-16-04