Маскировка URL с помощью DNS и / или Mod_Rewrite? - PullRequest
2 голосов
/ 26 декабря 2009

Я хочу настроить систему так, чтобы несколько пользовательских доменов, таких как [mydomain.com/params], перенаправляли на [myapp.com/mydomain.com/params]. Могу ли я сделать это, используя только настройки DNS ?

Я предполагаю, что это невозможно, поэтому было бы лучшим решением направить mydomain1.com, mydomain2.com, mydomain3.com и т. Д. На один IP-адрес, а затем использовать Mod_Rewrite для направления каждого запроса (незаметно) myapp.com/mydomain#.com/params? Каждый перенаправленный URL ведет к содержимому, которое загружается из централизованно размещенной CMS.

Любые предложения, ресурсы и / или решения будут с благодарностью!

Ответы [ 2 ]

4 голосов
/ 26 декабря 2009

Вот решение:

  1. Установить записи DNS-адресов для всех доменов тщеславия на один и тот же IP-адрес (например, для d1.com, d2.com, d3.com и т. Д. Все записи DNS A установлены на один IP или FQDN, например)
  2. Настройка сервера с одним VirtualHost, используя IP в качестве домена
  3. В корневом каталоге этого VirtualHost создайте .htaccess, который устанавливает mod_rewrite
  4. Используйте следующее для mod_rewrite в .htaccess:
Options +FollowSymLinks

RewriteEngine On

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

% 1 = запрашиваемый домен, поэтому www.d1.com или d1.com
$ 1 = остальная часть URL-адреса, которая идет после тщеславного URL-адреса (d1.com/everyting/else

Этот конфиг невидимо перенаправляет все запросы.

Примеры:

d1.com => returns content from => myapp.com/d1.com/

www.d1.com => returns content from => myapp.com/www.d1.com/

d1.com/blog/post/1 => returns content from => myapp.com/d1.com/post/1
2 голосов
/ 26 декабря 2009

Нет, для этого нельзя использовать только DNS.

Если каждый домен может работать автономно (www.domain.com), это будет простая настройка для нескольких сайтов и не требует mod_rewrite, просто набор директив <virtualHost>, которые указывают на каждый сайт .

Если вам нужна именно та настройка, которую вы описываете (http://www.hostname.com/www.2ndhostname.com/directoryname), вам понадобится один <VirtualHost> со всеми доменами в качестве псевдонимов и перенаправление на основе mod_rewrite для направления входящих запросов в правильный каталог.

...