2009-08-22 17 views

Respuesta

16

Si utiliza Apache que ha de hacer el enrutamiento de URL a través de mod_rewrite.

pequeño ejemplo:

RewriteEngine On 
RewriteRule ^(dir1)/?(path2)? main.php?dir=$1&path=$2 

Eso tendrá ninguna petición como

http://yoursite.com/dir1/path1 

servido por

http://yoursite.com/main.php?dir=dir1&path=path2 

Más ejemplos here.

La otra alternativa tienen cada petición redirigir a un solo archivo PHP

RewriteEngine On 
RewriteRule (.*) main.php?request=$1 

y luego hacerlo en el código, donde se puede utilizar un similar approach, por tener un conjunto de expresiones regulares que se corresponde con alguna código y luego redirigido a través del encabezado() o solo internamente.

10

Antes que nada, necesitará Apache's (supongo que su servidor web es Apache)mod_rewrite para habilitarse.


Luego, necesita crear una RewriteRule para redirigir todo a su página index.php.
Algo como esto podría hacer:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule .* index.php 

volverá a dirigir todas las peticiones a un archivo que no existe a index.php; esto significa que, si la URL solicitada es www.example.com/blah, en realidad se llamará a index.php.

Sobre eso, aquí un par de enlace que puede ayudar:


Entonces, esta página tiene que determinar lo que ha de ser visualizada, dependiendo de a qué URL inicial se llamó, o qué parámetros se reciben.

Esto se puede hacer usando el Design Pattern Front Controller, por ejemplo, está implementado en la mayoría de las estructuras PHP modernas, por ejemplo.


Ha habido muchas preguntas sobre este tema en SO; algunos de ellos (y sus respuestas) probablemente lo ayuden. Por ejemplo:

+0

Esta debería ser la respuesta estándar a esta pregunta. Funciona para cualquier lenguaje de servidor que se ejecute en Apache, y montones de reglas de reescritura no son particularmente sustentables de todos modos. – WCWedin

Cuestiones relacionadas