2011-12-09 14 views
12

Sto reindirizzando un dominio a un altro, ma voglio conservare il percorso nel reindirizzamento. Ad esempio, desidero visitare www.example.com/services/education/page.html, ma il mio reindirizzamento li porterà a www.new-example.com/services/education/page.html. Cosa scrivo nel mio file .htaccess per conservare il percorso "/services/education/page.html"?Come reindirizzare 301 un intero dominio preservando il percorso

In questo momento ho:

redirect 301 http://www.example.com/ http://www.new-example.com/ 

Ma io non sono sicuro se funziona o no (non è possibile verificare ancora come sto aspettando per i dettagli del dominio, ecc). Voglio solo essere sicuro quando inserisco il sito dal vivo. È giusto o me ne vado di base?

Grazie!

+0

È ancora possibile eseguire il test prima di ottenere i dettagli del dominio con un dominio esistente, ad es. google.com o addirittura inesistente come tutto quello che vuoi vedere è che il reindirizzamento 301 viene emesso in tutti i casi che si desidera, pur preservando il percorso. –

+1

Helicon ha un'app RegexTest che consente di testare le voci .htaccess. Genererà anche una regola per te, basata sui tuoi input/test. – Aaron

risposta

22

Questo dovrebbe farlo:

RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} !new-example.com$ [NC] 
RewriteRule ^(.*)$ http://new-example.com/$1 [L,R=301] 
+0

Il mio file .htaccess ha già questo codice (Wordpress) in esso: RewriteEngine On RewriteBase/ RewriteRule^indice \ .php $ - [L] RewriteCond% {} REQUEST_FILENAME -f RewriteCond % {REQUEST_FILENAME}! -d RewriteRule. /index.php [L] ho bisogno di quelle 4 linee di codice che mi hai dato? O avrò un problema nel mettere su RewriteEngine On due volte (lo stesso per RewriteBase /) – jasonaburton

+0

salta le prime due righe se già esistono nel tuo .htaccess –

+0

Questi reindirizzamenti non funzionano. L'unico codice che ho nel mio .htaccess è pubblicato nel mio commento sopra. C'è una ragione per cui non funziona? – jasonaburton

5

prova ad aggiungere quanto segue al file .htaccess nella root del vostro dominio example.com

RewriteEngine On 
RewriteBase/

#for all requests to www.example.com 
RewriteCond %{HTTP_HOST} ^www\.example\.com$ 
#redirect them to new-example 
RewriteRule (.*) http://www.new-example.com/$1 [R=301,L] 
4

tuo comando originale utilizza il modulo mod_alias Apache, e funzionerebbe, anche se potrebbe essere necessario aggiornarlo a:

Redirect 301/http://www.new-example.com/ 

Rimozione dell'esatto dominio del dominio corrente (vecchio) significa che tutti i domini che puntano a quella cartella verranno inviati al nuovo dominio, rendendo più robusto quello script di una riga.

Le altre risposte utilizzano il modulo Apache mod_rewrite. Se hai installato anche questo, va bene usare, anche se è 4+ linee di codice rispetto a uno. Inoltre, mod_alias fa parte del pacchetto "base", quindi dovrebbe essere su tutti i server Apache, mentre mod_rewrite è un'estensione opzionale, quindi alcuni potrebbero non averlo.

+0

Funziona molto bene. Questa sembra la migliore delle risposte per non dipendere da mod_rewrite. –

Problemi correlati