Foros del Web » Programación para mayores de 30 ;) » RegExp »

apache rewrite varias variables para GET

Estas en el tema de apache rewrite varias variables para GET en el foro de RegExp en Foros del Web. Buenos días, Les comento, estoy trabajando en PHP 5.4 y Apache 2.4.4 con mod_rewrite activado. Resulta que quiero que mi script se inicie y de ...
  #1 (permalink)  
Antiguo 29/01/2014, 06:02
lolainas
Invitado
 
Mensajes: n/a
Puntos:
apache rewrite varias variables para GET

Buenos días,
Les comento, estoy trabajando en PHP 5.4 y Apache 2.4.4 con mod_rewrite activado.
Resulta que quiero que mi script se inicie y de antemano disponga de algunos valores en $_GET pasados por URL de este modo (misitio/var1/var2/var3/...):
Código PHP:
$_GET {
    
'var1' => 'valor',
    
'var2' => 'valor',
    
'var3' => 'valor'

Lo he conseguido a medias con estas instrucciones:
Código:
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^([^/]+)/([^/]+)/(.+)$ index.php?var1=$1&var2=$2&var3=$3 [QSA,L]
RewriteRule ^([^/]+)/([^/]+)(/|)$ index.php?var1=$1&var2=$2 [QSA,L]
RewriteRule ^([^/]+)(/|)$ index.php?var1=$1 [QSA,L]
El problema esque sino paso var1 (ej: misitio/ o misitio) var1 contiene 'index.php' colo valor y el resto de variables dan el resultado esperado, es decir no se inicializan y al hacer isset($_GET['nombre']) puedo comprobar si las he recibido o no, pero el problema con isset($_GET['var1']) es que siempre devolverá true y quizás un valor no deseado como 'index.php'.

Alguién que me pueda ayudar porfavor? Saludos y muchas gracias.

Espero haberme explicado bien respecto a lo que quiero conseguir, para el que pueda y quiera comprobar resultados no hace falta mas que crear el htaccess cn el contenido arriba indicado y un fichero index.php con la instruccion var_dump($_GET);
  #2 (permalink)  
Antiguo 29/01/2014, 06:20
lolainas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: apache rewrite varias variables para GET

Señores sigo probando y he conseguido no recibir var1 haciendo lo siguiente:

RewriteRule ^([^/^index]+)(/|)$ index.php?var1=$1 [QSA,L]

le especifico que no reciba nada en caso de 'index' y al probar var1 no esta seteada, como esperaba que funcione, por lo tanto la funcionalidad es exactamente la que quiero, habria forma de recortar todo esto a una sola línea? como haria para recibir parametros opciones y que no lance un error 500?
  #3 (permalink)  
Antiguo 13/02/2014, 18:03
lolainas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: apache rewrite varias variables para GET

Perdón, pero creo que se debe publicar la respuesta si se encontró, he comprobado que es posible hacer lo que quiero en una sola línea, espero que a alguien más le pueda servir, estoy seguro de que sí.

Código:
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ([^/]*)/*([^/]*)/*(.*) index.php?controller=$1&action=$2&args=$3
</IfModule>
Y un ejemplito bien chulo para comprobar que todo funciona:
Código PHP:
<?php

class Input {

    private 
$type;

    function 
__construct($type) {
        
$this->type $type;
    }

    function 
__get($name) {
        return 
filter_input($this->type$name);
    }

    function 
__toString() {
        return 
print_r(filter_input_array($this->type), true);
    }

}

echo new 
Input(INPUT_GET);
Saludos, gracias.

Etiquetas: apache, rewrite, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:43.