Ampliando las respuestas de @Rodolphe y @Galen un poco.
Si sus necesidades de reescritura de url son limitadas, un .htaccess
codificado con las reglas descritas en el ejemplo de Rodolphe funcionará muy bien.
Sin embargo, como sugiere Galen, sus necesidades pueden ser desconocidas, o es posible que desee ampliarlas más adelante, sin la necesidad de tocar sus reglas de reescritura, una vez que las tenga funcionando.
Una forma común de hacerlo, es diseñar su aplicación alrededor de un esquema de URL que es www.host.com/controller/action/parameter
. Un ejemplo de dicha URL podría ser www.host.com/book/view/1
, que luego podría manejarse internamente de varias maneras.
1)
tiene secuencias de comandos separados para cada controlador. A continuación, vuelve a escribir cada solicitud en el formulario $controller.php?action=$action¶m=$param
, redireccionando las solicitudes no coincidentes o no válidas a un controlador predeterminado.
# Serve files and directories as per usual,
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !-d
# If the request uri doesn't end in .php
# and isn't empty, rewrite the url
RewriteCond %{REQUEST_URI} !.php$
RewriteCond %{REQUEST_URI} !^$
# Try matching against a param request first
RewriteRule (.*?)/(.*?)/(.*?) $1.php?action=$2¶m=$3 [L]
# If it didn't match, try to match an action
RewriteRule (.*?)/(.*?) $1.php?action=$2 [L]
# redirect all other requests to index.php,
# your default controller
RewriteRule .* index.php [L]
2)
Usted tiene un único punto de entrada (o un controlador frontal) a la que redirigir todas las peticiones, y este controlador frontal manijas dirigir la petición al controlador adecuado.
# Redirect all requests that isn't a file or
# directory to your front controller
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !-d
RewriteRule .* index.php [L]
Las reglas de reserva genéricas no adjuntarán ningún parámetro al controlador predeterminado/frontal. Sin embargo, como se trata de una redirección interna, tendrá acceso al REQUEST_URI
en PHP para determinar lo que debe hacer.
Estas son, naturalmente, no son sus únicas opciones. Solo mis 2 centavos en la sopa para revolver un poco más.
Descargo de responsabilidad: Todas las reglas de reescritura anteriores (así como todo lo demás, por supuesto) se escriben directamente de la cabeza (después de algunas cervezas) y no se han probado en ninguna parte.