Domanda

Ho spostato un ex sito basato su joomla in wordpress. L'importazione ha funzionato bene, ma il problema è che i vecchi collegamenti non funzionano più. Poiché ci sono solo circa 50 articoli, ho pensato che sarebbe stata una buona idea mettere una regola per ogni post (in .htaccess).

Beh ... Non sempre le cose sono come vuoi, quindi i reindirizzamenti non funzionano affatto :(

I vecchi link joomla sono simili a questo:

http://site.com/index.php?option=com_content&task=view&id=49&Itemid=29
http://site.com/index.php?option=com_content&task=view&id=42&Itemid=29
http://site.com/index.php?option=com_content&task=view&id=68&Itemid=29

E deve essere tradotto in:

http://site.com/?p=23
http://site.com/?p=24
http://site.com/?p=25
  • praticamente nessuna relazione tra collegamenti vecchi e nuovi, quindi non credo che una regex possa aiutare

  • sia il vecchio che il nuovo sito si trovano nello stesso dominio

Ok, il problema è che qualsiasi regola che ho provato (e ho provato MOLTO!), nessuna ha funzionato. in alcuni casi ricevo 500 errori, ma il più delle volte il reindirizzamento non ha funzionato.

Quindi, qualcuno di voi ragazzi ha avuto lo stesso problema? Non ho bisogno di avere dei bei permalink, ma se posso, sarà meglio. Il problema è che ho molti backlink ai vecchi URL e non voglio perderli.

Grazie mille ragazzi!

È stato utile?

Soluzione

Poiché la conversione del tuo sito in Wordpress è relativamente nuova, c'è qualcosa che ti impedisce di utilizzare il vecchio Joomla! ID nella tabella del database WP? Ciò ti consentirebbe di usare un regex abbastanza facilmente.

Un'altra opzione sarebbe quella di creare uno script PHP separato che gestisca Joomla! Quindi gli URL reindirizzano a quelli di Wordpress. Quindi avresti una regex nella tua configurazione di Apache che rileva index.php? Option = com_content & amp; task = visualizza gli URL, trova il valore per 'id', quindi reindirizza a someotherscript.php che avrebbe una mappa dei tuoi ID da Joomla! a Wordpress. Questo script utilizzerà quindi l'intestazione ('Posizione:? P ='. $ Id) per reindirizzare alla pagina corretta in Wordpress.

Altri suggerimenti

Grazie per l'idea! L'ho messo in index.php (default di wordpress):

if(isset(

Grazie per l'idea! L'ho messo in index.php (default di wordpress):

<*>

E funziona come ... GRANDE! : D

GET['option'])) { if(is_numeric(

Grazie per l'idea! L'ho messo in index.php (default di wordpress):

<*>

E funziona come ... GRANDE! : D

GET['id'])){ header ('HTTP/1.1 301 Moved Permanently'); header("Location: http://www.site.com/?p={

Grazie per l'idea! L'ho messo in index.php (default di wordpress):

<*>

E funziona come ... GRANDE! : D

GET['id']}"); die(); }else { die('Hacking attempt'); } }

E funziona come ... GRANDE! : D

Un'altra opzione potrebbe essere stata quella di utilizzare un plug-in di reindirizzamento per farlo. Salva la soluzione interrompendo ogni volta che cambi o aggiorni il tuo tema.

Ho avuto un problema molto simile con alcuni CMS sconosciuti a Joomla. Se vuoi farlo con .htaccess in Apache c'è un modo, ma se non c'è assolutamente alcuna relazione tra il vecchio URL e il nuovo URL di quello che devi scrivere due righe per ogni coppia di URL.

RewriteEngine On
# now the first Example
RewriteCond %{QUERY_STRING} ^option=com_content&task=view&id=49&Itemid=29$
RewriteRule ^index\.php$ /?p=23 [R=301,L]
# Repeat last two lines for all your URLs

Non sono sicuro che tu abbia davvero questo tipo di nuovi URL. Personalmente sarebbe meglio un URL SEF, ad es .: https://example.com/path/to/new/page

Se vuoi fare ciò che puoi, ma devi aggiungere un? alla fine della destinazione, altrimenti la vecchia stringa di query verrà aggiunta alla nuova destinazione in questo modo: https://example.com/path/to/new/page?option=com_content&task=view&id= 49 & amp; Itemid = 29 quindi per questo esempio fallo come segue:

RewriteCond %{QUERY_STRING} ^option=com_content&task=view&id=49&Itemid=29$
RewriteRule ^index\.php$ /path/to/new/page? [R=301,L]
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top