working permanentes permalink not htaccess funcionan friendly found enlaces wordpress mod-rewrite url-rewriting

permanentes - wordpress friendly url not working



Reescritura de direcciones de páginas Wordpress (4)

Pruebe esta regla:

RewriteRule ^fake/([^/]+)$ gallery?somevar=$1 [L]

ACTUALIZAR

Intenté usar la reescritura interna de WordPress. Lo que tengo que hacer es una dirección como esta:

http://example.com/galleria/artist-name

enviado a la página gallery.php con una variable que contiene el artist-name del artist-name .

Usé estas reglas según la documentación de Wordpress:

// REWRITE RULES (per gallery) {{{ add_filter(''rewrite_rules_array'',''wp_insertMyRewriteRules''); add_filter(''query_vars'',''wp_insertMyRewriteQueryVars''); add_filter(''init'',''flushRules''); // Remember to flush_rules() when adding rules function flushRules(){ global $wp_rewrite; $wp_rewrite->flush_rules(); } // Adding a new rule function wp_insertMyRewriteRules($rules) { $newrules = array(); $newrules[''(galleria)/(.*)$''] = ''index.php?pagename=gallery&galleryname=$matches[2]''; return $newrules + $rules; } // Adding the id var so that WP recognizes it function wp_insertMyRewriteQueryVars($vars) { array_push($vars, ''galleryname''); return $vars; }

Lo extraño ahora es que en mi instalación local de prueba wordpress funciona bien: se llama a la página de la galería y se galleryname variable galleryname . En el sitio real, por otro lado, se acepta la URL inicial (ya que no entra en un 404) PERO cambia a http://example.com/gallery (me refiero a que realmente cambia en la dirección del navegador). bar) y la variable no está definida en gallery.php .

¿Alguna idea de qué podría causar este comportamiento diferente?

Alternativamente, cualquier otra forma que no pueda pensar que pueda lograr el mismo efecto descrito en las primeras tres líneas está perfectamente bien.

Vieja pregunta

Lo que tengo que hacer es volver a escribir esta dirección:

(1) http://localhost/wordpress/fake/text-value

a

(2) http://localhost/wordpress/gallery?somevar=text-value

Notas:

  • la reasignación debe ser transparente: el usuario siempre debe ver la dirección (1)
  • gallery es un enlace permanente a una página de WordPress, no una dirección real

Básicamente necesito reescribir la dirección primero (para modificarla) y luego retroceder a la reescritura mod (para permitir que wordpress lo analice a su manera).

Problemas

si simplemente lo hago

RewriteRule ^fake$ http://localhost/wordpress/gallery [L]

funciona pero la dirección en el navegador cambia, lo cual no es bueno, si lo hago

RewriteRule ^fake$ /wordpress/gallery [L]

Obtengo un 404. Probé banderas diferentes en lugar de [L] pero fue en vano. ¿Cómo puedo hacer que esto funcione?

EDITAR: lleno .htaccess

# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^fake$ /wordpress/gallery [R] RewriteBase /wordpress/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /wordpress/index.php [L] </IfModule> # END WordPress


Disculpas por la respuesta muy demorada aquí, pero creo que lo que debes hacer es lo que sugirió Gumbo pero con la adición del indicador de transmisión / PT :

Este indicador fuerza al motor de reescritura a establecer el campo uri de la estructura request_rec interna al valor del campo de nombre de archivo.
...
Debe usar este indicador si desea mezclar directivas de diferentes módulos que permiten traductores de URL a nombre de archivo.

Aunque Wordpress (a través de mod_php) se ejecuta después de que mod_rewrite está listo, normalmente obtiene el uri original (pre-reescritura), y lo usa para hacer su propia reescritura interna, en lugar del valor de nuevo nombre del archivo.

Así que prueba:

RewriteRule ^fake/([^/]+)$ gallery?somevar=$1 [QSA,PT]

Agregué QSA para que, en caso de que alguien fuera a / wordpress / fake / something? Page = 3, se le pasara correctamente. Déjame saber como funciona eso.


Resuelto, era el complemento Permalink Redirect que debía configurarse para omitir las URL "virtuales" deseadas, de lo contrario emitiría un 301 movido permanentemente.


  1. Usando su editor de HTML / PHP favorito, abra wp-admin/includes/misc.php

  2. Función función de got_mod_rewrite Está alrededor de la línea 18 o más.

  3. Comente la función existente: /* this is commented out */ - Puede eliminar esta función si está seguro de que la solución funciona, pero para estar seguro, simplemente coméntelo en caso de que necesite volver a colocarla.

  4. Agregue lo siguiente en su lugar:

    function got_mod_rewrite() { $got_rewrite = true; return apply_filters(‘got_rewrite’, $got_rewrite); }

  5. Guarde y cargue.