Używanie DNS do przekierowywania na inny adres URL ze ścieżką [zamknięta]


120

Próbuję przekierować domenę na inną przez DNS.

Wiem, że użycie IN CNAME jest możliwe.

www.proof.com IN CNAME www.proof-two.com.

Potrzebuję przekierowania ze ścieżką. Kiedy ktoś pisze www.proof.com, powinno to zająćwww.proof-two.com/path/index.htm

Wiem, że można to zrobić przy użyciu funkcji serwera WWW, ale potrzebuję przekierowania DNS.

czy to możliwe?


Jeśli używasz domeny Google, możesz użyć jej „Przekierowanie domeny” w menu po lewej stronie -> Witryna.
John_J

Odpowiedzi:


136

Nie, to, o co prosisz, nie jest możliwe. DNS to system rozpoznawania nazw i nic nie wie o HTTP.


93

jeśli używasz AWS, przekierowanie, takie jak

mail.foo.com --> mail.google.com/a/foo.com

można skonfigurować w następujący sposób:

  1. w s3 utwórz pusty zasobnik „mail.foo.com”
  2. w sekcji Właściwości -> Statyczny hosting witryny ustaw „przekieruj wszystkie żądania na: mail.google.com/a/foo.com”
  3. w route53 utwórz rekord A „mail.foo.com”
  4. włącz „alias” i ustaw alias docelowy na zasobnik „mail.foo.com”

nie jest czystym rozwiązaniem DNS, ale działa;)

Należy jednak pamiętać, że przekierowanie pomija wszystkie parametry adresu URL, np .: ...? Param1 = wartość1 i param2 = wartość2


3
To świetna i bardzo przydatna odpowiedź dla każdego, kto używa AWS. Dziękuję Ci! Słodkie obejście
Ken,

6
Ważna uwaga: nazwa zasobnika musi być zgodna z nazwą przekierowywanego hosta. Zobacz serverfault.com/a/584714/105720
Jordan Feldstein

1
Działa to jako przekierowanie do katalogu, ale nie do określonej strony. Jeśli przekierujesz wszystkie żądania do „www.example.com/foo/bar/baz.html” AWS „pomocnie” doda „/” do adresu URL, zamieniając go na „www.example.com/foo/bar/baz .html / ”i zwraca błąd 404.
Earl Ruby,

34

Zdaję sobie sprawę, że to stary wątek, ale FWIW, na wypadek, gdyby ktoś inny szukał sposobu, aby to zrobić.

Chociaż dns nie rozumie ścieżki adresu URL, rozpoznaje subdomeny, więc zamiast:

www.proof.com W CNAME www.proof-two.com/path/index.htm

Możesz użyć:

www.proof.com W CNAME proof.proof-two.com

następnie przejdź do miejsca, w którym hostujesz, proof-two.com i ustaw go jako point proof.proof-two.com na www.proof-two.com/path/index.htm.

~ zawsze jest więcej niż jeden sposób na oskórowanie kota


2
Brzmi to jak bezużyteczna konstrukcja, zamiast wskazywać stronę proof.proof-two.com na www.proof-two.com/path/index.htm. Równie dobrze możesz wskazać www.roof.com, nie ma potrzeby dodatkowe rekordy DNS.
Michiel

12
@Michiel Brzmi to jak bezużyteczna konstrukcja, jeśli masz łatwy dostęp do proof-two.comserwerów WWW. Czasami duże firmy (i biurokracja) sprawiają, że wszystko jest o wiele bardziej skomplikowane, niż mogłoby być.
cregox

1
”, a następnie przejdź do miejsca, w którym hostujesz usługę proof-two.com i ustaw ją na adres proof.proof-two.com do www.proof-two.com/path/index.htm„ Jak to zrobić?
user2060451

17

Mam osobisty projekt, który może pomóc w rozwiązaniu tego problemu. Jest to rozwiązanie typu open source do przekierowywania, które umożliwia przekierowanie domeny po prostu zmieniając ustawienia DNS. Link do projektu: https://redirect.center/ .

Aby przekierować www.proof.com do www.proof-two.com zachowując parametry adresu URL, po prostu ustaw swój wpis DNS www na proof.com:

www.proof.com W CNAME www.proof-two.com.opts-uri.redirect.center.


Pytanie dotyczyło przekierowania do pełnego adresu URL ścieżki, a nie tylko domeny.
Tony Chiboucas

2
To wciąż nie jest pełna ścieżka
Tony Chiboucas

2
Ścieżka może być obsługiwana przez „.opts-slash” usługi. funkcjonować. Przekieruj job.moja-domena.com do moja-domena.com/jobs Skonfiguruj swoją strefę DNS w następujący sposób: Rekord hosta: zadania Typ: CNAME Do: www.moja-domena.com.opts-slash.jobs.redirect.center
David Turner

1
To naprawdę fajne i proste, jeśli Twój rejestrator nie zapewnia przekierowania - super!
Luca Steeb

1
To jest doskonałe! Założyłem, że coś takiego istnieje, ale nie mogłem go znaleźć (chyba muszą popracować nad swoim SEO).
Matt Dodge,

11

Naprawdę jest to łatwe dzięki redirect.center

Jeśli chcesz utworzyć CNAME jako:

www.proof.com W CNAME www.proof-two.com/path/index.htm

używając redirect.center, CNAME wygląda w trybie kanonicznym, jak:

www.proof.com W CNAME www.proof-two.com.opts-slash.path.opts-slash.index.htm.redirect.center.

Teraz, jeśli chcesz przekierować do witryny https, możesz dodać tę opcję:

www.proof.com W CNAME www.proof-two.com.opts-slash.path.opts-slash.index.htm.opts-https.redirect.center.

Teraz możesz utworzyć CNAME w trybie kanonicznym z ukośnikiem na swojej stronie przeznaczenia.


Próbowałem tego, ale to nie działa. Wszystko, co robi, to przekierowywanie użytkowników do witryny redirect.center.
Renan

Czy możesz skopiować swój rejestr CNAME? Czy możesz skopiować również ponownie utworzoną witrynę?
Alvaro Aguilar

1
@Renan Upewnij się, że domena źródłowa jest obecna w DNS i może zostać wyszukana przez serwer redirect.center; również nawigacja do target-domain.com.redirect.center w przeglądarce nie będzie działać. Zobacz wyjaśnienie: github.com/udleinati/redirect.center/issues/…
karmazyn

11

Edytować

Wygląda na to, że to mój dostawca (OVH) zezwala na tego rodzaju przekierowania w ramach swojej infrastruktury.

Zobacz: https://docs.ovh.com/gb/en/domains/redirect-domain-name/

Zachowuję odpowiedź poniżej ze względu na archiwizację, ale nie dostarcza ona żadnych znaczących informacji.

Oryginalna odpowiedź

Zrobiłem to używając rekordu TXT.

Aby przekierować foo.bar.comdo foo2.bar.com/path, po prostu dodaj foo IN TXT "1|foo2.bar.com/path"swoją bar.comstrefę DNS.

Zachowuje również ścieżki i parametry adresów URL. Więc jeśli spróbujesz uzyskać dostęp foo.bar.com/hello?foo=bar, zostaniesz przekierowany do foo2.bar.com/path/hello?foo=bar.


6
Czy mógłbyś to trochę bardziej rozwinąć? Czy masz jakieś informacje na temat korzystania z rekordów TXT?
Josiah

Czy spowoduje to również zachowanie parametrów adresu URL?
Andreas

1
Po zbadaniu sprawy wygląda na to, że OVH robi to za mnie. Zobacz: ovh.com/fr/g1339.redirection-nom-de-domaine (fr). Zaktualizuję odpowiedź.
Gabriel,

10

Aby odpowiedzieć na pierwotne pytanie, nie, to, czego chcesz, nie jest możliwe przy użyciu samego DNS (jak wszyscy stwierdzili). Oprócz wszystkiego, o czym już wspomniano, inną opcją jest użycie usługi przekierowania adresu URL. Te typy usług umożliwiają skonfigurowanie wielu różnych typów przekierowań adresów URL w zależności od potrzeb. Na przykład:

  1. Przekaż wierzchołek domeny do www. subdomena lub odwrotnie
  2. Przekaż zbiór nazw domen do jednego miejsca docelowego (przydatne do przekazywania błędów w pisowni domen, starych nazw firm itp.)
  3. Przekazywanie konkretnych nazw domen do głęboko powiązanych stron (takich jak tego, czego chce OP)

Usługą , która to robi, jest EasyRedir . Pełne ujawnienie: opracowałem EasyRedir. Z pewnością są tam jednak inne opcje, więc zachęcam do rozejrzenia się.


5

DNS nie przekierowuje ścieżki adresu URL, więc nie będzie to możliwe.

Dodawanie

www.proof.com IN CNAME www.proof-two.com

przekieruje dostęp do www.proof.com do www.proof-two.com, gdzie będziesz musiał użyć konfiguracji serwera WWW, aby skierować użytkowników do odpowiedniej strony.


4

Moje rozwiązanie tego problemu było dość proste i nieskomplikowane. Wszystko, czego potrzebujesz, to serwer IIS działający w domenie.

Skonfiguruj CNAME w DNS, aby wskazywał serwer IIS, używając nazw hostów w usługach IIS do rozpoznawania kilku witryn na jednym serwerze IIS. Używam tego samego serwera IIS do wydzielenia kilku subdomen do witryn zewnętrznych.

Następnie w przekierowaniu konfiguracji IIS dla tej witryny, aby przejść do Twojej zewnętrznej witryny / ścieżki, w moim przypadku był to nasz hostowany katalog, do którego powinien przejść katalog catalog.ourdomain.com. Stąd wszystkie poprawki są wykonywane w usługach IIS. Pamiętaj, aby włączyć uwierzytelnianie anonimowe, aby ruch nie był blokowany.


3

Przypuszczam, że masz taki scenariusz: masz unikalny serwer WWW obsługujący różne strony internetowe, z których każda ma być prezentowana przez oddzielną domenę:

dlatego strona page1.html powinna być obsługiwana przez www.customer1.com i tak dalej.

  1. utwórz subdomenę na serwerze DNS przyklad.com (Twój serwer WWW):

    klient1.example.com

  2. w ustawieniach serwera wirtualnego Apache zmapuj subdomenę do katalogu zawierającego witrynę internetową Twojego klienta nr 1, na przykład:

<VirtualHost *:80> SetEnv PAGE_ID "customer1" ServerName customer1.example.com ServerAlias www.customer1.com DocumentRoot /your/local/path/webserver/customer1 </VirtualHost> zwróć uwagę na wartość parametru „ServerAlias”, jest to ważne w następnym kroku -

w tym momencie powinieneś być w stanie przejść do witryny klienta1, przechodząc do:

klient1.example.com

  1. W ustawieniach DNS dla customer1.com musisz utworzyć rekord CNAME:

    CNAME = www LOCATION = customer1.example.com

Teraz możesz korzystać z: www.customer1.com.


3

Powiązana praca zakończyła się poniższym:

Problem:

http://a.com/p1/p2.html powinno dziś przejść do http://B.com/p1/p2.html
, ale później, po skonfigurowaniu ręcznie / automatycznie, to samo
http://a.com/p1 /p2.html powinien przejść do http://C.com/p1/p2.html

Odpowiedzi:

DNS - konwertuje nazwę na adres IP

Chociaż może wykonać wiele przekierowań, zawsze wyświetla adres IP DNS nie rozumie ścieżki ani części protokołu adresu URL, rozumie tylko część domeny, to znaczy tylko a.com jest konwertowana na adres IP, więc kiedy trafisz http: //a.com/p1/p2.html można przekonwertować na http://152.132.121.11/p1/p2.html, jeśli źle skonfigurujesz DNS, otrzymasz 152.132.121.11 (nie http: //152.132. 121.11 / p1 / p2.html ), więc wystąpiłby błąd 400s (400, 403 itd.)

Przekierowanie - to jest http://a.com/p1/p2.html można przekonwertować na http://b.com/p1/p2.html

Wszystkie metody, takie jak GET, POST, mogą działać, z nagłówkami i treścią, ale w grę wchodzi serwer WWW, może to być punkt awarii, więc skalowalność i dostępność będą kluczowe

Jeśli korzystasz z AWS , Route 53 -> API Gateway jest możliwe przez domeny niestandardowe, wewnętrznie przy użyciu frontu chmury

Jest to możliwe dzięki Amazon Certification Manager, niestandardowym domenom AWS Gateway i Route53, zwróć uwagę na ograniczenie us-east-1 w ACM

Mam nadzieję, że to komuś pomoże


2

Chociaż, jak już prawie wszyscy stwierdzili - nie można używać samego DNS. Jako obejście sugerowałbym wypróbowanie NGINX ( http://nginx.org/en/docs/http/request_processing.html ).

TL; DR - W NGINX można utworzyć wiele serwerów wirtualnych, które mogą przekierować Twoje żądanie na podstawie nazwy serwera.

Dawny. http://first.my-server.com przekierowuj do miejsca A, a http://second.my-server.com przekierowuj do miejsca B, podczas gdy oba współdzielą jeden fizyczny serwer.


0

Możesz użyć mod rewrite htaccess, przepisać do podfolderu, jeśli użytkownik żąda jednej określonej domeny, a nie drugiej.


-1

Oczywiście możliwe jest przekierowanie z następującą sztuczką:

Utwórz nową standardową strefę podstawową Nazwij ją taką samą jak fikcyjny adres URL, do którego chcesz przekierować Upewnij się, że ta fikcyjna nazwa różni się od dowolnej nazwy AD DNS usługi AD Utwórz rekord z następującymi wpisami:

puste ....................... A ......................... ... adres IP-2

www ......................... A ....................... ..... adres IP-2

Zasadniczo mamy tu do czynienia z przekierowaniem. Prawidłowy adres URL zostanie rozpoznany na podstawie istniejącej podstawowej strefy DNS DNS. Fikcyjny adres URL zostanie przekierowany na adres ip-addr-2. Co ważne, nazwa tego wpisu jest pusta, więc spadnie do następnego wpisu w rekordzie i przekieruje do ip-addr-2


-4

Wszyscy już to powiedzieli, a ja chcę tylko dać ci inną opcję usługi, która może ci pomóc. www.301redirect.it to bezpłatna usługa, która może przekierować domenę (z symbolem wieloznacznym) na dowolny docelowy adres URL.

Chcę również dodać ujawnienie: jestem programistą stojącym za tą usługą i są tam inne opcje.

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.