Reescribir en URL fuera de la base de WordPress

3 minutos de lectura

avatar de usuario
dave beso

Mi blog de wordpress está instalado en domain.com/blog y tengo una página con subpáginas cuya estructura parece domain.com/blog/page y domain.com/blog/page/subpage.

Quiero que mis visitantes puedan ir a domain.com/subpage y ver el contenido de domain.com/blog/page/subpage sin ser redirigido a esa URL externamente, evitando reescrituras de enlaces permanentes de wordpress.

Traté de usar RewriteRule ^subpage$ /page/subpage [L] y el contenido se está sirviendo, pero la URL parece domain.com/blog/page/subpage (Supongo que los enlaces permanentes de WordPress están llegando a eso).

.htaccess:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]

// tried inserting my code here.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>

# END WordPress

EDITAR:

Estos registros muestran la actividad en la visita a la página:

ip - - [19/Jun/2012:14:03:53 -0400] "GET /subpage/ HTTP/1.1" 301 - "http://domain.com/referrer/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:13.0) Gecko/20100101 Firefox/13.0.1"
ip - - [19/Jun/2012:14:03:53 -0400] "GET /blog/page/subpage/ HTTP/1.1" 200 20022 "http://domain.com/referrer/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:13.0) Gecko/20100101 Firefox/13.0.1"

Además, aquí está mi root .htaccess –

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^subpage/?$ /blog/page/subpage/ [QSA,L] 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>

RewriteCond %{HTTP_HOST} ^domain.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.domain.com$

  • Intenta insertar tu código antes de la RewriteBase /blog/

    – Jon Lin

    18 de junio de 2012 a las 20:14

  • mismo problema: el contenido se carga, pero la URL sigue siendo /blog/page/subpage/

    – Dave Beso

    18 de junio de 2012 a las 20:17

  • Por curiosidad, ¿qué sucede si cambia la expresión regular de su regla a: ^subpage/$?

    – Jon Lin

    18 de junio de 2012 a las 20:22

  • mismo resultado que el mencionado

    – Dave Beso

    18 de junio de 2012 a las 20:27

Agregar algunas reglas en su htaccess, mientras usa WordPress, siempre es complicado. En su lugar, debe usar su API de reescritura.

Primeroponga este código al final de /wp-content/themes/CURRENT_THEME_ACTIVATED/functions.php:

function my_custom_page_rewrite_rule()
{
    add_rewrite_rule('^subpage/?', 'index.php?pagename=page/subpage', 'top');
}
add_filter('init', 'my_custom_page_rewrite_rule');

Observación: necesita especificar los niveles de página en pagename parámetro, de lo contrario, la URL cambiará.

Después, debe decirle a WordPress que debe tener en cuenta su nueva regla. Para esto, ve a tu panel de administración: Settings > Permalinks > haga clic en Save botón. Ahora, deberías poder ir a domain.com/blog/subpage y ver el contenido de domain.com/blog/page/subpage (la url ya no cambia).

Finalmentesi quieres hacer domain.com/subpage accesible, debe agregar un htaccess en la carpeta raíz y poner este código en él:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ blog/$1 [L]

Y eso es. Usted puede ir a domain.com/subpage y ahora obtendrás lo que quieres.

¿Ha sido útil esta solución?