Нужно выяснить как работает Domain Forwarding (URL Frame) и Domain Redirection (URL Redirect) на ДНС хостинге из нутри ака Redirect Parked Domain или Forwarding Parked Domain. Сам хостер врядли поделится, открываем HTTP снифер и прослеживаем путь запроса к домену на котором стоит ДНС редирект.
Домены в примерах ниже к настоящему моменту могут уже не использовать ДНС хостинг с возможностью Domain Forwarding (URL Frame) или Domain Redirection (URL Redirect) ака Redirect Parked Domain или Forwarding Parked Domain, а поэтому текущие результаты HTTP снифинга могут отличаться от тех, которые представлены ниже!
Domain Redirection (URL Redirect) I:\>nslookup remoteshaman.ru *** Can't find server name for address 127.0.0.1: No response from server Server: ns2.recursive.dns.com Address: 8.20.247.20 Non-authoritative answer: Name: remoteshaman.ru Address: 195.234.4.18 http://remoteshaman.ru/ Display URL Normal browser lookup of URL http://remoteshaman.ru/ Completed Started At 2012-Aug-24 13:53:59.125 (local time) Completed DNS Lookup Lookup of hostname 'remoteshaman.ru' Completed Connect Connect to IP address '195.234.4.18' Completed HTTP Request Unconditional request sent for http://remoteshaman.ru/ Completed HTTP Response Headers and content returned Completed Redirect A redirect to http://remoteshaman.com/ was issued by the server --------------------------------- 590 bytes sent to 195.234.4.18:80 00:00:00.000 1.868 590 579 GET 302 Redirect to http://remoteshaman.com/ http://remoteshaman.ru/ GET / HTTP/1.1 Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/vnd.ms-excel, \ application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, \ application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, \ application/x-ms-application, */* Accept-Language: ru,uk;q=0.5 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; Trident/4.0; InfoPath.1; \ .NET CLR 2.0.50727; .NET4.0C; .NET CLR 3.5.30729; .NET4.0E; .NET CLR 1.1.4322; \ .NET CLR 3.0.4506.2152) Accept-Encoding: gzip, deflate Host: remoteshaman.ru Connection: Keep-Alive --------------------------------- HTTP/1.1 302 Found Date: Fri, 24 Aug 2012 10:53:54 GMT Server: Apache/1.3.33-Front-070114.1 (Win32) PHP/4.3.11 Location: http://remoteshaman.com Keep-Alive: timeout=5, max=29 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html; charset=iso-8859-1 120 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <HTML><HEAD> <TITLE>302 Found</TITLE> </HEAD><BODY> <H1>Found</H1> The document has moved <A HREF="http://remoteshaman.com">here</A>.<P> <HR> <ADDRESS>Apache/1.3.33-Front-070114.1 Server at remoteshaman.ru Port 80</ADDRESS> </BODY></HTML> 0
В примере выше видно, что ДНС запрос по домену remoteshaman.ru возвращает ИП адрес 195.234.4.18 принадлежащий хостингу 1GB, потом браузер (User-Agent: Mozilla/4.0) запрашивает "Host: remoteshaman.ru", на что от сервера "Server: Apache/1.3.33-Front-070114.1 (Win32) PHP/4.3.11" получает ответ "HTTP/1.1 302 Found" и перенаправляет браузер пользователя по нужному адресу "Location: http://remoteshaman.com".
На какие мысли/выводы это должно нас натолкнуть? Domain Redirection (URL Redirect) на ДНС хостинге устроен примерно таким образом:
- При включении на ДНС хостинге Domain Redirection (URL Redirect) для какого-то домена, ИП адрес для этого домена в файле зоны меняется на ИП адрес веб сервера, который будет обслуживать Domain Redirection (URL Redirect) - в примере выше это был "Server: Apache/1.3.33-Front-070114.1 (Win32) PHP/4.3.11". При этом старый ИП адрес из настроек домена должен быть сохранён, если он был;
- На веб сервере автоматически должен быть создан виртуальный хост (remoteshaman.ru.conf) для Domain Redirection (URL Redirect) домена, в примере это был remoteshaman.ru, а в корне сайта index.php со строкой кода header("Location: http://remoteshaman.com", true, 302); или же можно и вовсе не создавать индексных файлов, а прямо в секции <virtualhost *:80>...</virtualhost> вписать строку "Redirect 301 / http://remoteshaman.com" (301 Moved Permanently) либо "Redirect 302 / http://remoteshaman.com" (302 Found), на выбор пользователя в панели управления, после чего без разрыва текущих соединения апач перезагружается командой apachectl graceful
Дальше пример с Domain Forwarding (URL Frame) на ДНС хостинге для домена adminshell.tk:
Domain Forwarding (URL Frame) for adminshell.tk domain I:\>nslookup adminshell.tk *** Can't find server name for address 127.0.0.1: No response from server Server: ns2.recursive.dns.com Address: 8.20.247.20 Non-authoritative answer: Name: adminshell.tk Addresses: 93.170.52.21, 93.170.52.31 http://adminshell.tk/ Display URL Normal browser lookup of URL http://adminshell.tk/ Completed Started At 2012-Aug-24 14:08:28.750 (local time) Completed DNS Lookup Lookup of hostname 'adminshell.tk' Completed Connect Connect to IP address '93.170.52.31' Completed HTTP Request Unconditional request sent for http://adminshell.tk/ Completed HTTP Response Headers and content returned Completed --------------------------------- 590 bytes sent to 93.170.52.31:80 00:00:00.000 2.223 590 1964 GET 200 text/html;charset=UTF-8 http://adminshell.tk/ GET / HTTP/1.1 Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/vnd.ms-excel, \ application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, \ application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, \ application/x-ms-application, */* Accept-Language: ru,uk;q=0.5 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; Trident/4.0; InfoPath.1; \ .NET CLR 2.0.50727; .NET4.0C; .NET CLR 3.5.30729; .NET4.0E; .NET CLR 1.1.4322; \ .NET CLR 3.0.4506.2152) Accept-Encoding: gzip, deflate Host: adminshell.tk Connection: Keep-Alive --------------------------------- 1964 bytes received by 94.27.108.235:1730 HTTP/1.0 200 OK Date: Fri, 24 Aug 2012 11:08:24 GMT Server: Resin/2.1.17 Cache-Control: no-cache Pragma: no-cache Expires: Thu, 01 Jan 1970 00:00:00 GMT X-Server: fala.ams.taloha.net Content-Type: text/html;charset=UTF-8 Set-Cookie: JSESSIONID=a9xJewgKPuU9; path=/ Connection: close <html> <head> <title>bla bla</title> <meta name="description" content="bla bla"> <meta name="keywords" content="bla bla"> <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-23441223-3']); _gaq.push(['_setDomainName', 'none']); _gaq.push(['_setAllowLinker', true]); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; \ ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + \ '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script> </head> <frameset rows="*" framespacing="0" frameborder="NO"> <frame src="http://remoteshaman.com" name="dot_tk_frame_content" scrolling="auto" noresize> </frameset> <noframes> <body> </body> </noframes> </html>
Принцип работы Domain Forwarding (URL Frame) на ДНС хостинге для домена adminshell.tk аналогичен принципу работы Domain Redirection (URL Redirect) на ДНС хостинге для паркованного домена remoteshaman.ru - т.е. как в первом так и во втором примере используются веб сервера, только во втором примере уже используется не "Server: Apache/1.3.33-Front-070114.1 (Win32) PHP/4.3.11", а "Server: Resin/2.1.17" и в корневом каталоге для виртуального хоста лежит индексный файл с фреймом <frame ..., который указывает на наш Domain Forwarding (URL Frame) домен.
Во втором примере мы постоянно будем находится во фрейме по адресу adminshell.tk в котором будем просматривать сайт с адреса remoteshaman.ru.
Как видно ничего особо хитрого тут нет:
- на ДНС меняем A запись или создаём новый файл зоны, а к старому файлу дописываем .bak
- на веб сервере создаём виртуальный хост с нужными параметрами
- перезагружаем веб сервер
Как программно реализовать Domain Forwarding (URL Frame) и Domain Redirection (URL Redirect) ака Redirect Parked Domain или Forwarding Parked Domain - это уже зависит от конкретной ситуации. Я думаю, что подробные примеры реализации можно нарыть в пакетах cPanel или Webmin, а можно не забивать голову, психануть, взять и написать самому:)