Czy istnieje sposób przekierowania jednej domeny do drugiej za pomocą ustawień DNS, zachowując informacje o ścieżce?

26

Na przykład moja domena jest example.comi kiedy ktoś do niej nawiguje example.com/sample/page.htm, chcę, aby przekierowała na nią test.com/sample/page.htm.

Wiem, że można to łatwo zrobić za pomocą .htaccesspliku lub strony 404. Jednak szukam rozwiązania, które nie wymaga ode mnie, aby mój dostawca DNS hostował dla mnie jakiekolwiek pliki.

Chcę to zrobić tylko z ustawieniami DNS, np .:

  • Rekordy CNAME
  • Rekordy
  • 301 spedycja
  • (brak jakichkolwiek innych ustawień DNS)

Czy jest na to jakiś sposób?

Rozsądny
źródło
Myślę, że to, czego chciałeś, było bardziej konfiguracją z użyciem symboli wieloznacznych, ale nie sądzę, że można go teraz wdrożyć bez przekierowań.
Tim Post
czy ktoś może dać jasną i prostą odpowiedź na ten temat .... :(
@ fatty, czego nie rozumiesz?
John Conde

Odpowiedzi:

12

Możesz sprawić, że example.com/test.com rozwiąże się na tym samym serwerze (IP) przez dns (CNAME, jeśli chcesz) i to zadziała.

Jeśli chcesz to zrobić na podstawie ścieżki, niż nie. DNS nie zna takich rzeczy jak URL. DNS po prostu tłumaczy część hosta adresu URL (example.com) na adres IP. Serwer WWW odpowiada za ustalenie, co (lub gdzie) adres URL ma rozwiązać. Uważam, że musisz to zrobić na poziomie serwera WWW (http).

Tomasz
źródło
1
Tak, jeśli skonfigurujesz CNAME na example.com, nie musisz hostować niczego na example.com. Po prostu ustaw hosta test.com na odpowiadanie na przykład.com, a następnie użyj mod_rewrite lub URL Recriting na test.com, aby wykryć nazwę hosta example.com i przepisać do siebie. Może to być niebezpieczne; lepiej, żeby example.com miał swój własny vhost na serwerze test.com, tylko z regułami przekierowywania.
JasonBirch
8

Jak zauważono, nie można tego zrobić w całości za pomocą DNS. Jeśli jednak masz DNS na przykład example.com, który odnosi się do tego samego serwera co test.com, bardzo łatwo jest skonfigurować Apache, aby osiągnąć to, co chcesz zrobić. Po prostu dodaj:

<VirtualHost *:80>
  ServerName example.com
  Redirect permanent / http://test.com/
</VirtualHost>

Spowoduje to przepisanie każdego przychodzącego linku do example.com na link do test.com, z zachowaniem ścieżki.

Co więcej, twój dostawca DNS nie musi hostować dla ciebie żadnych plików, ponieważ zależy to tylko od serwera internetowego, który już uruchomiłeś dla test.com.

Kris
źródło
Lub po prostu dodaj dyrektywy ServerAlias ​​do pliku wirtualnego hosta test.com.
Michael Clerx
3

Nie możesz tego zrobić przez sam DNS. Przekierowania 301 nie są domeną DNS. Są jak serwer sieciowy.

Możesz wskazać wpisy DNS example.com na ten sam serwer, co test.com, i ustawić example.com jako domenę aliasową na test.com.

intlect
źródło
3

Oto dokładna .htaccessreguła, której używam do przekierowywania wszystkich żądań z www.mydomain.com do mydomain.com (ponieważ krótszy jest mój kanoniczny adres URL):

RewriteCond %{HTTP_HOST} ^www\.mydomain\.com$ [NC]
RewriteRule ^(.*)$ http://mydomain.com/$1 [R=301,L]

To proste wystarczy zmodyfikować, aby przekierować foo.comdo foobar.com, zachowując żądanie, klient dostaje tylko 301 przekierowanie do odpowiedniej domeny.

Nie można jednak tego robić „tylko” za pomocą DNS, jak powiedzieli inni, serwery DNS po prostu tłumaczą nazwy FQDN na adresy IP.

Tim Post
źródło
Użyłem tego, ale musiałem usunąć ostatni ukośnik z drugiej linii ( RewriteRule ^(.*)$ http://mydomain.com$1 [R=301,L]), aby dodać dwa ukośniki do przekierowanego adresu URL. Czy ktoś jeszcze tego doświadczył?
julien_c