2012-09-01 12 views
5

Necesito pasar 3 variables con una URL pero usando barras. Así, por ejemplo, me gustaría utilizar esta URL:Convertir texto después de barras en variables con HTACCESS

http://www.example.com/variable1/variable2/variable3

tengo esto en mi HTACCESS que permite que el texto después de la primera variable que se pasa, pero no puedo conseguir los otros dos para venir a través, incluso si añado & $ 2

<IfModule mod_rewrite.c> 
RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule /?([A-Za-z0-9_-]+)/?$ process.php?width=$1&height=$2 [QSA,L] 

Cualquier enlace o ayuda sería grande

Respuesta

5

Estás a sólo capt urante una variable en su regla de reescritura.

Usted necesita algo así como:

RewriteRule ^([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)/?$ process.php?width=$1&height=$2&third=$3 [QSA,L] 

o, un poco más corto:

RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/?$ process.php?width=$1&height=$2&third=$3 [QSA,L] 

(el \w palabra de caracteres incluye letras, dígitos y pone de relieve)

he hecho sólo el terminando barra oblicua por lo que esta regla de reescritura solo haría algo si hay exactamente 3 variables.

+0

@Fraggy normalmente utilizo varias reglas de reescritura para que, por lo que primero la regla de 3 VARs, entonces la regla con 2 y luego la regla, con sólo 1. También podría incluir las variables opcionales en paréntesis no capturados anidados. – jeroen

6

Puede que le resulte más fácil de agarrar los parámetros en el archivo .php, a través de:

$pathinfo = isset($_SERVER['PATH_INFO']) 
    ? $_SERVER['PATH_INFO'] 
    : $_SERVER['REDIRECT_URL']; 

$params = preg_split('|/|', $pathinfo, -1, PREG_SPLIT_NO_EMPTY); 

echo "<pre>"; 
print_r($params); 

Así que llamar al script con esto:

http://www.example.com/variable1/variable2/variable3

volvería:

Array 
(
    [0] => variable1 
    [1] => variable2 
    [2] => variable3 
) 

Esto funcionará para ambos:

http://www.example.com/variable1/variable2/variable3 y http://www.example.com/process.php/variable1/variable2/variable3

Cuestiones relacionadas