Jak przekierować roota i rootować tylko poprzez htaccess?


53

Chcę przekierować tylko mój katalog główny do innego adresu URL, ale zachowaj wszystkie podkatalogi / /, do których należą (i przekieruj)

przykład:

mysite.com/1 przekierowuje do gdzieś mysite.com/admin otwiera stronę

Chcę, aby mysite.com/ przekierowywał na mysecondsite.com i tylko to z przekierowaniem 301 za pomocą htaccess

Odpowiedzi:


75

Spróbuj tego:

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

Jeśli nie musisz sprawdzać starej domeny (na przykład jeśli katalog, w którym znajduje się Twój .htaccess, jest używany tylko przez starą domenę), możesz usunąć drugą linię.


1
W moim przypadku musiałem przekierować ruch na mysite.com/, ale nie na foo.mysite.com, więc musiałem dodać wyrażenie regularne do wiersza 2: RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]aby upewnić się, że dopasowanie dotyczy konkretnego hosta
jaygooby

Bardziej efektywne jest sprawdzenie ścieżki URL we RewriteRule wzorcu (jak w odpowiedzi @ DaveForgaca), zamiast używania dodatkowego warunku do sprawdzenia REQUEST_URIzmiennej serwera.
MrWhite

38

Jeśli masz na myśli, że chcesz przekierować „/” do innej domeny, zadziała to:

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

To tylko pasuje do katalogu głównego domeny bez niczego po nim, więc przekieruje tylko nazwę domeny bez określonej nazwy pliku.


Lekka odmiana działała dla mnie. Dodane na dole mojego htaccess, po wywołaniu wszystkich innych reguł, chciałem po prostu renderować stronę powitalną dla każdego, kto odwiedza moją domenę główną (bez żadnej subdomeny): RewriteCond% {HTTP_HOST}! ^ (Subdomain1 | subdomain2) \. Mysite \ .com $ [NC] RewriteRule ^ $ /welcome.php [NC, L]
MarsAndBack

15

To powinno działać dobrze:

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

2
Byłoby to preferowane (w stosunku do istniejących odpowiedzi), jeśli nie używasz jeszcze mod_rewrite do innych przekierowań.
MrWhite

-3

Krótsze rozwiązanie:

Redirect 301 / http://mysecondsite.com/

12
To NIE zrobi tego, czego chce jardel. Przekieruje WSZYSTKIE strony, a nie tylko root.
sharoz
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.