Как указать домен для URL-адреса на внешнем сайте с помощью серверов имен

Вот чего я хочу добиться.

У меня есть домен A, в котором я хочу обновить серверы имен, чтобы использовать пользовательские настройки серверов имен в домене B (т.е. ns1.domainb.com и ns2.domainb.com).

Затем, когда пользователи переходят на domainA.com, я хочу, чтобы они переходили на domainB.com/domainA.

Как я могу это сделать? Разве я не могу сделать это через файлы HTACCESS в домене B?


person ProfessorGT    schedule 30.03.2015    source источник
comment
RewriteRule ^(.*)$ http://domainB.com/domainA$1 [R=301,L] в .htaccess на domianA.com. Оба домена указывают на одно и то же расположение сервера?   -  person Drakes    schedule 30.03.2015
comment
Я не хочу ничего делать на domainA.com, кроме как обновлять серверы имен. У меня нет домена. На самом деле это сайт пользователя. Я пытаюсь сделать так, чтобы всякий раз, когда кто-либо посещает domainA.com, он перенаправлял их на определенную страницу на domainB.com. Я уже сделал это с помощью переадресации (301 перенаправление), но я знаю, что это можно сделать и с серверами имен. Посмотрите на сайты парковки доменов. Они требуют, чтобы вы просто обновили свой сервер имен, чтобы он принадлежал им. Как они это делают?   -  person ProfessorGT    schedule 30.03.2015
comment
Настройте DNS домена A.com так, чтобы он указывал на IP-адрес сервера домена B.com. В корне домена B.com создайте правило htaccess для перенаправления на /domainA.   -  person Drakes    schedule 30.03.2015


Ответы (1)


Когда пользователи переходят на domainA.com, я хочу, чтобы они переходили на domainB.com/domainA

Это решение объясняет, как достичь:

example.com --> domainB.com/example.com

DNS-записи и .htaccess

Сначала настройте DNS domainA.com так, чтобы он указывал на IP-адрес сервера domainB.com. В корневом каталоге domainB.com создайте файл .htaccess с правилом для перенаправления/перезаписи запросов domainA.com на domainB .com/доменA. Есть два метода и результата.

Способ 1 — молча переписать запрос URI

Пользователь переходит на http://example.com, браузер показывает http://example.com.

Установите эти правила .htaccess в корне домена B.com:

RewriteEngine On
RewriteBase /

# Check that the request is NOT from domainB.com, e.g. domainA
RewriteCond %{HTTP_HOST} !domainB\.com$ [NC]

# Capture the top-level domainA name
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+?)$

# Check that we are not already requesting a valid file or directory
# This prevents inserting the subdirectory name into an already valid path
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite requests with the domainA subdirectory
RewriteRule (.*) /%1/$1 [L]

Способ 2. Явно принудительно перенаправить на новое место.

Пользователь переходит на http://example.com, браузер показывает http://domainB.com/example.com.

Установите эти правила .htaccess в корне домена B.com:

RewriteEngine On
RewriteBase /

# Check that the request is NOT from domainB.com, e.g. domainA
RewriteCond %{HTTP_HOST} !domainB\.com$ [NC]

# Capture the top-level domainA name
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+?)$

# Force a 301 redirect to the new URI
RewriteRule ^(.*)$ http://domainB.com/%1%{REQUEST_URI} [R=301,L]

Настройка

На момент написания этой статьи вы можете протестировать и изменить (большинство) правил .htaccess в соответствии с вашими индивидуальными требованиями здесь: http://htaccess.madewithlove.be/

Вот советы и рекомендации по дальнейшей настройке: http://mod-rewrite-cheatsheet.com/

person Drakes    schedule 30.03.2015
comment
Как я могу сделать это динамическим, чтобы мне не приходилось помещать строку в свой htaccess для каждого домена, для которого я хочу это сделать? Есть ли способ заставить его работать, если правило файла htaccess может быть HTTP_HOST != domainb.com, если да, то перепишите на domainb.com/domaina? - person ProfessorGT; 30.03.2015
comment
Да может на самом деле. :) Я обновлю свой ответ вашим новым требованием - person Drakes; 30.03.2015
comment
Спасибо, Дрейкс. У меня сейчас почти час ночи. Позвольте мне попробовать это завтра, и если это сработает, я приму ваш ответ. Большое спасибо за вашу помощь! Я отпишусь, если у меня возникнут какие-либо проблемы. - person ProfessorGT; 30.03.2015
comment
Я переписал свой ответ, чтобы он стал полным решением. Пожалуйста, дайте мне знать, как это работает для вас - person Drakes; 30.03.2015
comment
Результирующий URL-адрес после перезаписи должен быть domainB.com/domainA.com. - person ProfessorGT; 31.03.2015
comment
Без проблем. Вы хотите сохранить расширение в подкаталоге. Простое исправление. я обновлю это - person Drakes; 31.03.2015
comment
HTTP-запрос переписан, и запрос domainA прозрачно перенаправит посетителя на domainB.com/domainA.com/. Это не редирект. Это прозрачная перезапись запроса, которая происходит на домене B.com. Браузер увидит URL domainA.com, но действие будет происходить на domainB.com - person Drakes; 31.03.2015
comment
Вы очень близки. В том виде, в котором он написан прямо сейчас, это выходной URL-адрес, который он создает: domainsA.com/domainA.com - person ProfessorGT; 31.03.2015
comment
Я пытался настроить код htaccess, но безуспешно. :( шкаф, который я получил, был domainA.com/domainB.com/domainA.com lol, что совершенно неправильно. lol - person ProfessorGT; 31.03.2015
comment
Имейте в виду, что htaccess.madewithlove.be не может обработать некоторые мои скрипты, связанные с именем файла. Это важно. Я настоятельно рекомендую запустить htaccess на локальном тестовом сервере, как у меня для вашего случая. - person Drakes; 31.03.2015
comment
Кроме того, переопределение URL-адреса и перенаправление — это две разные вещи. Вы хотите, чтобы пользователь знал, что он находится на домене B.com? - person Drakes; 31.03.2015
comment
Мой второй случай вызовет перенаправление 301. Пользователь будет знать, что он был перенаправлен. Однако htaccess.madewithlove.be покажет вам именно то, что вы хотите. - person Drakes; 31.03.2015
comment
Идеальный. Спасибо, Дрейкс. Ты жжешь! Ваша запись теперь также является действительно надежным руководством. Выглядит отлично. Я собираюсь попробовать метод 1 на своем собственном сервере сегодня вечером. Принимаю ответ, так как я только что проверил метод 2, и он работает. - person ProfessorGT; 31.03.2015
comment
У меня все еще есть проблемы. Его тестирование проходит правильно, как я сказал на тестере, но когда я помещаю его в свой файл htaccess для domainB.com, он переходит на страницу с надписью «Эта веб-страница недоступна», когда я перехожу на domainA.com в браузере. Это из подробностей сообщения -> Сервер на achilliescontracting.com не может быть найден, потому что поиск DNS не удался. - person ProfessorGT; 01.04.2015
comment
Я почти уверен, что проблема не в вашем коде htaccess, а в моей пользовательской настройке сервера имен. Так что игнорируйте это. Еще раз спасибо за отличный ответ на мой вопрос Drakes. Заботиться. Теперь мне придется разобраться с этим на стороне NS. - person ProfessorGT; 01.04.2015