Jakiej reguły przekierowania użyłbym do przekierowania wszystkich stron, olddomain.example
do których nastąpi przekierowanie newdomain.example
?
Witryna ma zupełnie inną strukturę, dlatego chcę, aby każda strona w starej domenie była przekierowywana na nową stronę indeksu domen .
Myślałem, że tak się stanie (w katalogu podstawowym olddomain.example):
RewriteEngine On
RewriteRule ^(.*)$ http://newdomain.example/ [R=301]
Ale jeśli przejdę do, nastąpi olddomain.example/somepage
przekierowanie do newdomain.example/somepage
. Spodziewam się przekierowania tylko do newdomain.example
sufiksu strony.
Jak ukryć ostatnią część?
.htaccess
mod-rewrite
Yuval Adam
źródło
źródło
RewriteEngine on
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,L]
* stackoverflow.com/a/7578810/1066234Odpowiedzi:
Może być tak:
źródło
RewriteCond %{HTTP_HOST} !^NEWDOMAIN\.com$ [NC]
?Poniższa odpowiedź może potencjalnie spowodować nieskończoną pętlę przekierowania ...
Tutaj przekierowuje wszystko po nazwie domeny w adresie URL do dokładnie tej samej kopii w nowym adresie domeny:
www.example.net/somepage.html?var=foo
przekierowuje dowww.newdomain.com/somepage.html?var=foo
źródło
Żeby wyjaśnić, po usunięciu przekierowania hostingowego, które było przeszkodą, moje oryginalne rozwiązanie działa również:
źródło
Użyłem tego na moim blogu Wordpress jako .htaccess. Konwertuje http: //www.blah.example/asad , http: //blah.example/asad , http: //www.blah.example2/asad itp., Na http: //blah.example/asad Dzięki wszystkim inne odpowiedzi wymyśliłem to.
źródło
To zadziałało dla mnie
źródło
Istnieją różne sposoby, aby to zrobić i różne przekierowania, wymieniłem je poniżej:
301 (Stałe) Przekierowanie: Wskaż całą witrynę na inny adres URL na stałe. Jest to najczęstszy typ przekierowania i jest przydatny w większości sytuacji. W tym przykładzie przekierowujemy do domeny „przyklad.com”:
Przekierowanie 302 (tymczasowe): skieruj całą witrynę na inny tymczasowy adres URL. Jest to przydatne do celów SEO, jeśli masz tymczasową stronę docelową i planujesz wrócić do głównej strony docelowej w późniejszym terminie:
Przekieruj index.html do określonego podfolderu:
Przekieruj stary plik do nowej ścieżki pliku:
Przekieruj do określonej strony indeksu:
źródło
Redirect 301 / http://example.com/$1
wszystkie strony oryginalnej witryny zostaną przekierowane do nowego katalogu głównego witryny$1
jest tu wymagane, myślisz oRedirectMatch
dyrektywie (ale wtedy nadal musisz zdefiniować grupę przechwytującą, aby się$1
do niej odwoływać).Redirect
dyrektywy będą przekierowywać jak dla podobnych, podczas gdy OP chce przekierować tylko na stronę główną nowej witryny (chociaż samo w sobie nie jest to zalecane). Może być konieczne użycieRedirectMatch
dyrektywy, jeśli chcesz po prostu przekierować do określonego adresu URL.Jeśli chcesz przekierować z jakiejś lokalizacji do subdomeny, możesz użyć:
Redirect 301 /Old-Location/ http://subdomain.yourdomain.com
źródło
RewriteEngine On
rzuca 500 Błąd wewnętrzny. To bardzo ograniczona przestrzeń internetowa. KorzystanieRedirect 301 / http://foo
jest jedynym możliwym sposobem radzenia sobie.Jeśli nowa domena, do której przekierowujesz starą witrynę, znajduje się na innym hoście, możesz po prostu użyć
Redirect
Spowoduje to przekierowanie wszystkich żądań z
olddomain
donewdomain
.Redirect
dyrektywa nie będzie działać lub może spowodować a,Redirect loop
jeśli zarówno twoja nowa domena, jak i stara domena są na tym samym hoście, w takim przypadku będziesz musiał użyćmod-rewrite
przekierowania na podstawie żądanego nagłówka hosta.źródło
Moja reputacja nie pozwala mi skomentować odpowiedzi, ale chciałem tylko zauważyć, że tutaj najwyżej oceniana odpowiedź zawiera błąd:
powinien mieć ukośnik przed 1 $, więc
źródło
Moje rozwiązanie jako SymLinks nie działało na moim serwerze, więc użyłem If w PHP.
źródło
Jest to błąd występujący w starszych wersjach apache (a więc mod_rewrite), w których prefiks ścieżki był dołączany do przepisanej ścieżki, jeśli została zmieniona. Spójrz tutaj
Myślę, że zostało to naprawione w apache2 V2.2.12, jest specjalna flaga, której musisz użyć, którą dodam tutaj, kiedy ją znajdę (myślę, że była to NP dla No Path)
źródło
Z punktu widzenia użyteczności byłoby lepiej, gdybyś wysłał również ścieżkę z żądaniem (tj. To, co masz w tej chwili) i pozwolisz, aby Twoja nowa strona sobie z tym poradziła:
(i jeszcze lepiej, robi to automatycznie).
Jest to oczywiście dużo kodowania i heurystyki dla większej witryny, ale moim zdaniem opłaci się to pod względem satysfakcji użytkownika (gdy starannie zapisana zakładka wymarzonego produktu prowadzi tylko do pierwszej strony newdomain.com, to jest frustrujące).
źródło
Jeśli chcesz, aby przekierowanie zakończyło nową inną witrynę (domenę) bez parametrów lub stron, użyj tego:
źródło
.htaccess
ponieważ po prostu nie będzie pasowało do żadnych adresów URL w katalogu głównym dokumentu. Działa w konfiguracji serwera lub w kontekście VirtualHost.Próbowałem odpowiedzi użytkownika969621 i rozwiązania PO, ale przeglądarka wyświetliła błąd bezpieczeństwa dla strony kasy. Nie mogę ci powiedzieć dlaczego.
Nasz host (Site Ground) również nie mógł tego rozgryźć.
Ostateczne rozwiązanie było bliskie, ale drobna korekta odpowiedzi użytkownika968421 (uwaga: w przeciwieństwie do OP próbowałem przekierować na odpowiednią stronę, nie tylko na stronę główną, więc zachowałem referencję
$1
wsteczną [ za domeną] użytkownika969621 odpowiedź):Dostałem poprawkę z tego generatora przekierowań htaccess zalecanego przez artykuł Host Gator (desperackie czasy, desperackie środki, amiright?).
źródło
Tak proste, a to nie przeniesie końcowego zapytania z adresu URL do nowej domeny.
źródło
Użyj przekierowań warunkowych z
Options -FollowSymLinks
iAllowOverride -Options
wyłączonych przez Hoster, jeśli chcesz również podać kilka plików lokalnych:Próbka .htaccess
Ten przykład będzie obsługiwać lokalny index.html i przekierowywać wszystkich innych pracowników do nowej domeny.
źródło
Wypróbuj tę metodę, aby przekierować wszystko na stronę główną nowej domeny. Działa to dla mnie:
źródło
Poprzednie odpowiedzi nie działały dla mnie.
Użyłem tego kodu. Jeśli używasz OSX, upewnij się, że używasz prawidłowego formatu.
źródło