htaccess - url amigables php mvc
El enrutamiento PHP para ayudar a las URL amigables (1)
Estoy construyendo un sitio web que ejecuta todo el código a través de index.php.
Por ejemplo index.php?controller=something&id=01234
.
Quiero usar PHP para crear URL amigables, así que hago esto:
$request = str_replace(''/root/'', '''', $_SERVER[''REQUEST_URI'']);
$params = explode(''/'', $request);
$controllers = array(''first_c'', ''second_c'', ''third_c'');
if (in_array($params[0], $controllers)) {
include($params[0]); // just to give an example
}
Luego, con una regla mod_rewrite RewriteRule ^.*$ ./index.php
todo a index.php.
Tengo algunos problemas con esto: porque todo se envía a index.php, incluidos .css, .js y archivos de imágenes. Entonces, al lado del html generado por php, nada funciona correctamente. Estoy teniendo grandes problemas con esto porque probé mod_rewrite para todo (en lugar de PHP) y no puedo hacer que funcione ... por favor mira: Apaches mod_rewrite VS. Enrutamiento PHP?
Gracias.
Simplemente mejore su reescritura mod:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !/.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar/.gz)$ index.php [L]
</IfModule>
¡Agregue especialmente la línea RewriteCond %{REQUEST_FILENAME} !-f
Y si quieres más secciones:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule admin/.*$ admin.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !/.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar/.gz)$ index.php [L]
</IfModule>