2012-06-18 17 views
9

Mi blog de WordPress está instalado en domain.com/blog y tengo una página con subpáginas cuya estructura se parece a domain.com/blog/page y domain.com/blog/page/subpage.Reescribir en la URL fuera de la base de Wordpress

Quiero que mis visitantes sean capaces de ir a domain.com/subpage y ver el contenido de domain.com/blog/page/subpage sin ser redirigido a la URL externa, evitando reescrituras enlace permanente wordpress.

He intentado utilizar RewriteRule ^subpage$ /page/subpage [L] y se está sirviendo el contenido, pero la url parece domain.com/blog/page/subpage

.htaccess (supongo que los enlaces permanentes de Wordpress son llegar a ella.):

# 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 

EDIT:

Estos registros muestran la actividad en la página visita -

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í es mi raíz .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$ 
+0

Intente insertar su código * antes * el 'RewriteBase/blog /' –

+0

mismo problema - el contenido se carga, pero la URL sigue siendo '/ blog/page/subpage /' –

+0

Por curiosidad, ¿qué sucede si cambia la regla de expresiones regulares? a: '^ subpágina/$'? –

Respuesta

3

Adición de algunas reglas en su .htaccess, durante el uso de Wordpress, siempre es complicado. En su lugar, debe usar su API de reescritura.

Primera, poner este código en el final de /wp-content/themes/CURRENT_THEME_ACTIVATED/functions.php continuación:

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: es necesario especificar los niveles de página en pagename parámetro, de lo contrario la URL cambiará.

Luego,, necesita decirle a Wordpress que tiene que tener en cuenta su nueva regla. Para ello, vaya a su panel de administración: Settings>Permalinks> haga clic en el botón Save. Ahora, debería poder ir al domain.com/blog/subpage y ver el contenido de domain.com/blog/page/subpage (la url ya no cambia).

Finalmente, si usted quiere hacer domain.com/subpage alcanzable, es necesario 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 todo. Puede ir al domain.com/subpage y ahora obtendrá lo que desea.

Cuestiones relacionadas