2012-10-25 18 views
15

Ho eseguito correttamente la migrazione di massa di un sito WordPress a Drupal. Sfortunatamente in Wordpress, l'URL del contenuto era qualcosa come www.example.org/?p=123. Il mio dominio è sempre lo stesso, ma desidero eseguire un reindirizzamento tramite htaccess poiché Drupal non consentirà che gli URL siano www.example.org/?p=123. In altre parole, il contenuto non ha lo stesso URL di Wordpress. Ad esempio, il nuovo Drupal URL sarebbe qualcosa di simile www.example.org/content/MyNewPageCome reindirizzare gli URL in base alla stringa di query?

Ho provato questo nel mio file .htaccess e non funziona

Redirect 301 /\?p=375 http://www.example.org/content/MyNewPage 

Così ho provato il basso, ma non funziona nemmeno.

Redirect 301 /\?p\=375 http://www.example.org/content/MyNewPage 

Proprio come una prova, ho provato il sotto e ha funzionato.

Redirect 301 http://www.example.org http://www.google.com 

ho fatto in modo che la mia regola di reindirizzamento è in cima alla lista nel mio .htaccess così sarà valutata per prima. Come posso risolvere questo?

risposta

29

né Redirect né RedirectMatch consentono di specificare una stringa di query per l'origine di reindirizzamento. [Source]

Devi usare mod-rewrite per il reindirizzamento in base a query string:

RewriteCond %{QUERY_STRING} ^p=375$ 
RewriteRule (.*) http://www.example.org/content/MyNewPage? [R=301,L] 
+0

Sfortunatamente vengo reindirizzato a una pagina 404 non trovata e il mio URL è ancora bloccato mostrando http://www.example.org/?p=375. Posso confermare che "content/MyNewPage" esiste e funziona. Posso anche confermare che le mie RewriteRules funzionano perché funzionano correttamente con Drupal. – user785179

+0

Svuota la cache del browser e riprova, cache del browser '301 Redirect permanente – undone

+0

Un buon suggerimento, ma ora Firefox dice che sta reindirizzando come un ciclo infinito. "Firefox ha rilevato che il server sta reindirizzando la richiesta per questo indirizzo in un modo che non verrà mai completato." L'URL sta uscendo come http://www.example.org/content/MyNewPage?p=375 – user785179

1

Si può considerare utilizzare ModRewrite nel vostro .htaccess

<IfModule mod_rewrite.c> 

RewriteEngine On 

RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteCond %{QUERY_STRING}  ^p=345$ [NC] 
RewriteRule index.php content/MyNewPage [NC,L,R=301] 

</IfModule> 

E si potrebbe anche voler passare il vecchio ID pagina al nuovo URL concatenato (o forse da QS?):

<IfModule mod_rewrite.c> 

RewriteEngine On 

RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteCond %{QUERY_STRING}  ^p=(.*)$ [NC] 
RewriteRule index.php content/MyNewPage-%1 [NC,L,R=301] 

</IfModule> 
+0

Ho provato il tuo metodo ma sono stato indirizzato a una pagina di errore 404. – user785179

Problemi correlati