Wie leite ich root und nur root über htaccess um?

53

Ich möchte nur meinen root auf eine andere URL umleiten, aber alle / sub / -Verzeichnisse dort behalten, wo sie hingehören (und umleiten)

Beispiel:

mysite.com/1 leitet zu irgendwo weiter mysite.com/admin öffnet eine Seite

Ich möchte, dass mysite.com/ zu mysecondsite.com umleitet und nur dies mit einer 301-Umleitung unter Verwendung von htaccess


quelle

Antworten:

75

Versuche dies:

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

Wenn Sie nicht nach der alten Domain suchen müssen (wenn beispielsweise das Verzeichnis, in dem sich Ihr .htaccess befindet, nur von der alten Domain verwendet wird), können Sie die zweite Zeile entfernen.

Rodrigo Sieiro
quelle
1
In meinem Fall musste ich den Datenverkehr zu mysite.com/ umleiten, aber nicht zu foo.mysite.com. Daher musste ich Zeile 2 einen regulären Ausdruck hinzufügen: RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]um sicherzustellen, dass die Übereinstimmung für den genauen Host gilt
jaygooby 23.06.14
Es ist effizienter, den URL-Pfad im RewriteRule Muster zu überprüfen (wie in @ DaveForgacs Antwort), anstatt eine zusätzliche Bedingung zum Überprüfen der REQUEST_URIServervariablen zu verwenden.
MrWhite
38

Wenn Sie nur "/" zu einer anderen Domain umleiten möchten, funktioniert Folgendes:

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

Dies stimmt nur mit dem Stamm der Domäne überein, ohne dass ein Dateiname angegeben wurde. Daher wird nur der Domänenname umgeleitet, ohne dass ein Dateiname angegeben wurde.

Dave Forgac
quelle
Eine kleine Variation hat bei mir funktioniert. Nachdem alle anderen Regeln aufgerufen wurden, wollte ich nur eine Willkommensseite für alle Benutzer meiner Stammdomäne (ohne Subdomäne) erstellen: RewriteCond% {HTTP_HOST}! ^ (Subdomain1 | subdomain2) \. Mysite \ .com $ [NC] RewriteRule ^ $ /welcome.php [NC, L]
MarsAndBack
15

Dies sollte gut funktionieren:

RedirectMatch 301 ^/$ https://example.com/
stefanbc
quelle
2
Dies ist (gegenüber den vorhandenen Antworten) vorzuziehen, wenn Sie mod_rewrite nicht bereits für andere Weiterleitungen verwenden.
MrWhite
-3

Eine kürzere Lösung:

Redirect 301 / http://mysecondsite.com/
Minipark
quelle
12
Dies wird NICHT das tun, was Jardel will. Es leitet ALLE Seiten um und nicht nur das Stammverzeichnis.
Sharoz