2010-04-19 23 views
6

Estoy tratando de hacer URLs limpias explotando $_SERVER['REQUEST_URI'] y luego cambiar entre los resultados.Redirigir todo a index.php

Sin embargo, una vez que un usuario sale de index.php, asumo que necesito redirigirlos de nuevo a index.php para procesar la URL que desean alcanzar. ¿Cómo puedo lograr esto?

Así, por ejemplo, si el usuario va a www.domain.com/home/johndoe/... me gustaría index.php (domain.com/index.php) a ser golpeado de manera que pueda procesar la /home/johndoe/ través request_uri.

Respuesta

19

.htaccess:

RewriteEngine on 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?param=$1 [QSA,L] 
+1

@pixel: esta es la forma más común de hacerlo. Si apache no encuentra un archivo o directorio, llamará a llamar a index.php. Ahora puede acceder al uri solicitado en su index.php con '$ _GET ['param']'. Nota: en ciertas configuraciones 'RewriteBase /' puede causar problemas. Si es así, solo coméntelo con un signo de libra. – webbiedave

+0

Exactamente lo que estaba buscando. ¡Gracias! – pixel

2

Puede utilizar Apache de mod_rewrite para mapear URLs basado en expresiones regulares, incluyendo el envío de todo para index.php,

+1

Nunca me gustaron los documentos de apache ... demasiado prolijo cuando estás buscando algo específico – SeanJA

2

Tendrá imágenes y otros archivos que se mostrarán en el index.php.

RewriteEngine On 

Enciende el motor Rewite

RewriteCond %{REQUEST_FILENAME} !\.(jpg|jpeg|gif|png|css|js|pl|txt)$ 

Si el nombre de archivo no es igual JPG, JPEG ... que necesitan para index.php

RewriteRule ^(.*)$ index.php?q=$1 [QSA] 

"Redirigir" en el índice. php.

En uso:

Con PHP $_GET la q le dará los /articles/1987/12/20/Répa's birthday/

Si se divide la variable en cada recortar con

list($type, $date_year, $date_month, $date_day, $title) = split('[/-]', $_GET['q']); 

Se le dieron exactamente lo que quiere .

+0

Esa condición de reescritura es un poco excesiva, y romperá cosas si termina guardando archivos sin extensiones de archivo (lo que definitivamente podría suceder). – SeanJA

Cuestiones relacionadas