URL $_GET no funcionará

3 minutos de lectura

avatar de usuario
Sr. G

Tengo un problema que nunca tuve y no encuentro el motivo. Moví mi sitio a otro host y ahora no “lee” las variables $_GET.

tengo esta url: http://cualquiera.com/ruta?filtro=si&provincia=Santa+Fe&localidad=Rosario
Y si llamo a esto:

$localidad = $_GET['localidad'];
$provincia = $_GET['provincia'];
$filtro = $_GET['filtro'];

echo $localidad;
echo "hola";
echo $provincia;
echo $filtro;

No se imprime nada excepto “hola”, por lo que no hay ningún error de PHP. Aquí está mi .htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Estoy trabajando en un sitio de Wordpres, tal vez tenga algo que ver con Permalinks o algo así, estoy realmente perdido. Muchas gracias, agradezco su ayuda.

EDITAR

Cambié el nombre de mi .htacces para que no lo lea y la página se rompió, así que fui a la configuración de enlaces permanentes en wordpress y los configuré en

 - Post Name    http://luminias.com/index.php/example-page/

Y ahora FUNCIONA, pero ahora esta es la url:

http://whatever.com/index.php/path/?filtro=si&provincia=Santa+Fe&localidad=Rosario

E imprime todos los $_GET, pero necesito que “/index.php/” desaparezca.

  • ¿En qué archivo quieres que se haga eco? Cuál es el /path ¿Dónde está el punto?

    – vaso123

    16 de diciembre de 2014 a las 14:02

  • esos son los contenido completo de tu .htaccess? Habilite el informe/visualización de errores de PHP e inspeccione $_GET con: var_dump($_GET);. En la parte superior de su guión error_reporting(E_ALL); ini_set('display_errors', 1); Si no se completa GET, recibirá avisos sobre índices de matriz indefinidos.

    –Michael Berkowski

    16 de diciembre de 2014 a las 14:02

  • @MichaelBerkowski gracias, hice eso y surgió esto: Notice: Undefined index: localidad in E:\kunden\homepages\1\d456765835\www\Luminias\wp-content\themes\twentytwelve\puntosdeventas.php on line 44 Y esto unas POCAS veces, por cada get que llamo en todo el archivo.

    – Sr. G

    16 de diciembre de 2014 a las 14:09


  • @lolka_bolka es una página de WordPress hecha con una plantilla en un archivo php. Los estoy haciendo eco en ese archivo php.

    – Sr. G

    16 de diciembre de 2014 a las 14:11

  • Mire a través de su jerarquía de directorios para asegurarse de que no tiene otro .htaccess en un nivel superior, que está reemplazando a este y eliminando su cadena de consulta. También depuraría cambiando el nombre de .htaccess (para deshabilitarlo) y ver si su $_GET Es afectado.

    –Michael Berkowski

    16 de diciembre de 2014 a las 14:21

avatar de usuario
Mitul Shah

Agregar add_rewrite_tag función en su function.php para todos los parámetros:

function custom_rewrite_tag() {
        add_rewrite_tag('%localidad%', '([^&]+)');
}
add_action('init', 'custom_rewrite_tag', 10, 0);

Y puede llamar a su parámetro en la plantilla usando

$wp_query->query_vars['localidad']

Aquí está el documentación completa

Tenga en cuenta que usando $_GET en una URL reescrita no funcionará, incluso si la reescritura incluye las variables de cadena de consulta. Debes usar $wp_query.

  • Gracias por la respuesta, pero esto no funcionó. En mi servidor anterior funcionó de maravilla, es un método de formulario OBTENER el que reescribe la URL, no entiendo por qué no funciona ahora

    – Sr. G

    16 de diciembre de 2014 a las 14:17

  • ¿Por qué no debería funcionar exactamente un parámetro $_GET en una URL reescrita? Actualicé una página hoy que consistía en direcciones URL reescritas y todavía tenía acceso a los parámetros $_GET.

    –Ole Haugset

    16 de diciembre de 2014 a las 14:29

¿Ha sido útil esta solución?