2016-03-11 17 views
7

del sito Il mio blog Wordpress pubblicare URL utilizzati per assomigliare a questo:Come reindirizzare vecchi Wordpress post del blog di URL a quelli nuovi

http://example.com/some-random-blog-post-name http://example.com/other-random-blog-post-name http://example.com/in-case-you-dont-get-the-point-theyre-all-different

sul mio nuovo sito WordPress che voglio loro di vivere in un/blog/sottodirectory cui appartengono:

http://example.com/blog/some-random-blog-post-name

Cosa c'è di difficile di questo è che i vecchi URL seguono nessun modello, quindi penso che ho bisogno di corrispondere contro qualsiasi cosa non riconosciuta. Qualcosa di simile quasi funziona ...

# Redirect unmatched blog posts to /blog/* 
<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !blog 
RewriteCond %{HTTP_HOST} ^example.com [NC,OR] 
RewriteRule ^(.*)$ https://example.com/blog/$1 [L,R=301,NC] 
</IfModule> 

... ma è in conflitto con propri RewriteRules di Wordpress, e rompe tutte le altre pagine del sito che dovrebbe passare attraverso invariato.

Così come posso raggiungere i seguenti obiettivi:

example.com/some-random-post 301 ->example.com/blog/some-random-post example.com/another-random-post 301 ->example.com/blog/another-random-post

example.com/contact/ -> (No redirect)

+0

Quale modello di URL deve essere reindirizzato a '/ blog' e cosa non dovrebbe? – anubhava

+0

@anubhava Penso che sia già spiegato nella domanda sopra. Non esiste uno schema specifico per i vecchi post del blog perché non erano preceduti da una sottodirectory. Quindi, in pratica, dobbiamo reindirizzare tutto ciò che non è una pagina Wordpress esistente. – emersonthis

+0

In tal caso mod_rewrite non è la soluzione. Deve essere gestito in WP stesso. – anubhava

risposta

1

All'interno 404.php (o 404 gestore) del tema è possibile utilizzare questo frammento all'inizio del file:

<?php 

$url = $_SERVER['REQUEST_URI']; 

if (stripos($url, "/blog/", 0) !== 0) { 
    header("Location: " . "/blog" . $url); 
    exit; 
} 

// rest of the 404 code 
?> 
+0

Sì, questo è quello a cui stavo pensando anch'io ... So che funzionerà per applicare il codice nel 404. file modello php, ma penso che ti sarebbe più pulito se quella logica fosse vissuta in functions.php ... Sai che esiste un hook/filtro per 404 richieste? – emersonthis

+0

In realtà non sono un esperto di WP. Esiste una funzione chiamata 'is_404()' che ti permette di usare questa gestione 404 in 'header.php' o 'index.php' – anubhava

0

Se fossi in te, vorrei creare un nuovo file "blog" sul mio ftp e vorrei tagliare e incollare tutto il vecchio wordpress in questo nuovo file. In questo modo, non è necessario modificare nulla in .htaccess, il reindirizzamento verrà eseguito automaticamente in wordpress bo.

+2

Non seguo esattamente ciò che stai suggerendo.Può approfondire ciò che dovrebbe succedere come risultato di questo? – emersonthis