Чи є спосіб перенаправити один домен на інший за допомогою параметрів DNS, зберігаючи інформацію про шлях?


26

Наприклад, мій домен є, example.comі коли хтось переходить до нього example.com/sample/page.htm, я хочу, щоб він переспрямовувався test.com/sample/page.htm.

Я знаю, що це, ймовірно, можна легко зробити за допомогою .htaccessфайлу або 404 сторінки. Однак я шукаю рішення, яке не вимагає, щоб мій постачальник DNS розміщував будь-які файли для мене.

Я хочу це зробити лише з налаштуваннями DNS, наприклад:

  • Записи CNAME
  • А записи
  • 301 переадресація
  • (будь-які інші налаштування DNS, які у мене відсутні)

Чи можна це зробити?


Я думаю, що те, що ви хотіли, було більше налаштуванням підстановки, але я не думаю, що це може бути реалізовано на даний момент без переадресації.
Tim Post

хтось може дати чітку і просту відповідь на це .... :(

@fatty, що ти не розумієш?
Джон Конде

Відповіді:


12

Ви можете вирішити, що example.com/test.com вирішує той самий веб-сервер (IP) через dns (CNAME, якщо хочете), і це спрацює.

Якщо ви хочете зробити це за принципом "за кожен шлях", ніж ні. DNS не знає таких речей, як URL. DNS просто переводить головну частину URL-адреси (example.com) в IP-адресу. Веб-сервер відповідає за з'ясування того, що (або де) має вирішувати URL. Я вважаю, що вам потрібно це зробити на рівні веб-сервера (http).


1
Так, якщо ви налаштували CNAME на example.com, вам не потрібно нічого розміщувати на сайті example.com. Просто встановіть хост test.com для відповіді на example.com, а потім використовуйте mod_rewrite або URL Переписування на test.com для виявлення імені хоста example.com та перепишіть собі. Це може бути небезпечно; краще, щоб example.com мав власний vhost на сервері test.com, в ньому є лише правила переадресації.
JasonBirch

8

Як зазначалося, це неможливо зробити повністю з DNS. Однак, якщо у вас є DNS для example.com, зверніться до того ж сервера, що і test.com, налаштувати Apache дуже просто, щоб виконати те, що ви хочете зробити. Просто додайте наступне:

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

Це перепише будь-яке вхідне посилання на example.com на посилання для test.com, зберігаючи шлях.

Крім того, постачальнику DNS не потрібно розміщувати жодних файлів для вас, оскільки це покладається лише на веб-сервері, на якому ви вже працюєте для test.com.


Або просто додайте директиви ServerAlias ​​у файл віртуального хоста test.com ..
Майкл Клеркс

3

Це неможливо зробити лише через DNS. 301 переадресація - це не DNS. Вони - справа веб-сервера.

Що ви можете зробити, це вказати ваші записи DNS example.com на той же сервер, що й тест test.com, і встановити example.com як домен псевдоніма для test.com.


3

Ось точне .htaccessправило, яке я використовую для переадресації всіх запитів з www.mydomain.com на mydomain.com (оскільки коротша моя канонічна URL-адреса):

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

Це досить легко змінити , щоб редирект від foo.comдо foobar.com, зберігаючи при цьому запит, клієнт просто отримує 301 редирект на відповідний домен.

Однак ви не можете зробити це "просто" з DNS, як говорили інші, сервери DNS просто вирішують FQDN на IP-адреси.


Я використовував це, але мені довелося видалити останню косу рису у вашому другому рядку ( RewriteRule ^(.*)$ http://mydomain.com$1 [R=301,L]), інакше вона додасть два косої риски до перенаправленої URL-адреси. Хтось ще відчував це?
julien_c
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.