Come reindirizzare root e solo root tramite htaccess?


53

Voglio reindirizzare solo la mia radice su un altro URL, ma mantenere tutte le directory / sub / a cui appartengono (e reindirizzare)

esempio:

mysite.com/1 reindirizza da qualche parte mysite.com/admin apre una pagina

voglio mysite.com/ per reindirizzare a mysecondsite.com e solo questo con un reindirizzamento 301 utilizzando htaccess

Risposte:


75

Prova questo:

RewriteEngine on
RewriteCond %{HTTP_HOST} mysite\.com [NC]
RewriteCond %{REQUEST_URI} ^/$
Rewriterule ^(.*)$ http://mysecondsite.com/ [L,R=301]

Se non è necessario controllare il vecchio dominio (ad esempio, se la directory in cui si trova il tuo .htaccess viene utilizzata solo dal vecchio dominio) è possibile rimuovere la seconda riga.


1
Nel mio caso, dovevo reindirizzare il traffico su mysite.com/ ma non su foo.mysite.com, quindi ho dovuto aggiungere una regex alla linea 2: RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]per garantire che la partita fosse per l'host esatto
jaygooby,

È più efficiente controllare il percorso URL nel RewriteRule modello (come nella risposta di @ DaveForgac), invece di utilizzare una condizione aggiuntiva per controllare la REQUEST_URIvariabile del server.
Mr White,

38

Se vuoi dire che desideri reindirizzare "/" su un altro dominio, funzionerà:

RewriteEngine on
RewriteRule ^$ http://www.example.com/ [R=301,L]

Questo corrisponde solo alla radice del dominio con nulla dopo di esso, quindi reindirizzerà il nome di dominio solo senza un nome file specificato.


Una leggera variazione ha funzionato per me. Aggiunto in fondo al mio htaccess, dopo aver invocato tutte le altre regole, volevo solo rendere una pagina di benvenuto a chiunque visitasse il mio dominio principale (senza alcun sottodominio): RewriteCond% {HTTP_HOST}! ^ (Sottodominio1 | sottodominio2) \. Mysite \ .com $ [NC] RewriteRule ^ $ /welcome.php [NC, L]
MarsAndBack

15

Questo dovrebbe funzionare bene:

RedirectMatch 301 ^/$ https://example.com/

2
Questo sarebbe preferibile (alle risposte esistenti) se non si sta già utilizzando mod_rewrite per altri reindirizzamenti.
Mr White

-3

Una soluzione più breve:

Redirect 301 / http://mysecondsite.com/

12
Questo NON farà ciò che desidera jardel. Reindirizzerà TUTTE le pagine anziché solo la radice.
Sharoz,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.