Есть ли способ перенаправить один домен в другой через настройки DNS, сохраняя информацию о пути?

26

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

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

Я хочу сделать это только с настройками DNS, например:

  • Записи CNAME
  • Записи
  • 301 пересылка
  • (любые другие настройки DNS мне не хватает)

Есть какой-либо способ сделать это?

Senseful
источник
Я думаю, что вы хотели больше настройки подстановочных знаков, но я не думаю, что это может быть реализовано на этом этапе без перенаправлений.
Тим Пост
Кто-нибудь может дать четкий и простой ответ по этому поводу .... :(
@ Толстяк, что ты не понимаешь?
Джон Конде

Ответы:

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 имел своего собственного виртуального хоста на сервере 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.

Kris
источник
Или просто добавьте директивы ServerAlias ​​в файл виртуального хоста test.com ..
Майкл Клеркс,
3

Вы не можете сделать это только через DNS. 301 переадресация не вещь DNS. Они вещь веб-сервера.

Вы можете указать DNS-записи example.com на тот же сервер, что и test.com, и настроить example.com в качестве псевдонима домена test.com.

intlect
источник
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-серверы просто разрешают полное доменное имя в IP-адреса.

Тим Пост
источник
Я использовал это, но мне пришлось удалить последнюю косую черту во второй строке ( RewriteRule ^(.*)$ http://mydomain.com$1 [R=301,L]), иначе она добавит две косые черты к перенаправленному URL. Кто-нибудь еще испытал это?
julien_c