2012-06-18 10 views
9

Il mio blog wordpress è installato a domain.com/blog e ho una pagina con sottopagine la cui struttura assomiglia a domain.com/blog/page e domain.com/blog/page/subpage.Riscrivere su URL al di fuori della base di Wordpress

Desidero che i miei visitatori siano in grado di andare su domain.com/subpage e vedere il contenuto di domain.com/blog/page/subpage senza essere reindirizzati a quell'URL esternamente, evitando la riscrittura di permalink di wordpress.

Ho provato ad utilizzare RewriteRule ^subpage$ /page/subpage [L] e il contenuto viene pubblicata, ma l'url sembra domain.com/blog/page/subpage

.htaccess (direi permalink Wordpress sono sempre ad esso.):

# 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:

Questi log mostrano l'attività a pagina 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" 

Inoltre, qui è la mia radice .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

provare a inserire il codice * prima * del 'RewriteBase/blog /' –

+0

stesso problema - carichi di contenuti, ma url è ancora '/ blog/pagina/sottopagina /' –

+0

Per curiosità, cosa succede se si cambia espressione regolare della vostra regola a: '^ sottopagina/$'? –

risposta

3

Aggiunta di alcune regole nel vostro .htaccess, mentre si utilizza Wordpress, è sempre difficile. Invece, dovresti usare la sua API di riscrittura.

primo, inserire questo codice in poi finiscono di /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'); 

Nota: è necessario specificare i livelli di pagina in pagename parametro, altrimenti l'url cambierà.

Quindi, devi dire a Wordpress che deve prendere in considerazione la nuova regola. Per questo, vai al tuo pannello di amministrazione: Settings>Permalinks> fai clic sul pulsante Save. Ora dovresti essere in grado di andare su domain.com/blog/subpage e vedere il contenuto di domain.com/blog/page/subpage (l'url non cambia più).

Infine, se si vuole fare domain.com/subpage raggiungibile, è necessario aggiungere un .htaccess nella cartella principale e inserire questo codice in esso:

RewriteEngine On 
RewriteBase/

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

E ... il gioco è fatto. Puoi andare a domain.com/subpage e ora otterrai ciò che desideri.

Problemi correlati