我在AWS上有一个EC2。 configuration服务器(Apache 2,PHP 7.0,…),启用mod_rewrite。 我之前做了很多次这个过程,但从来没有在Ubuntu 16.04上做过。
毕竟,testing我的服务器我观察到:
例:
这不工作:
<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 < – 工作。
案例:
我已经configuration如下:
https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-16-04
https://www.digitalocean.com/community/tutorials/how-to-set-up-mod_rewrite-for-apache-on-ubuntu-14-04