Как обнаружить входящий запрос (с помощью скрипта PHP) из поддомена CNAME?

У нас есть простое приложение перенаправления php.

Вот пример:

spiderman.com/redirection/redirect-to-marvel/

PHP-скрипт находится в папке «перенаправления» и, допустим, перенаправляет вышеуказанную ссылку на marvel.com

ТЕПЕРЬ…

Что делать, если я хочу создать совершенно другой субдомен, называемый try.superman.com, который перенаправляет с помощью CNAME на spiderman.com/redirection/, чтобы, если я открою этот URL-адрес:

try.superman.com/redirect-to-marvel/ он действительно перейдет на spiderman.com/redirection/redirect-to-marvel/, который, конечно же, отправит его на marvel.com

Короче говоря, браузер покажет try.superman.com/redirect-to-marvel/ (из-за CNAME), но как я, на сервере, обнаруживаю входящий запрос из записи CNAME и перенаправляю его на правильный локальная папка?

Просто нужно какое-то направление здесь …

PHP dns_get_record + htaccess в правильном направлении?

Важным отличием является то, что CNAME и переписывание / перенаправление (или vhost) – это совершенно разные вещи, которые часто путаются.

CNAME – это объект DNS, так что вы можете иметь несколько имен, указывающих на единственный адрес. Например, bob.example.com – это хост, который живет в 1.2.3.4. Затем вы можете создать CNAME для alice.example.com, который указывает на bob для разрешения DNS и возвращает тот же IP-адрес.

Переадресация – это HTTP-метод для запроса запроса, который попадает в определенное место ( http://bob.example.com/index.html ) и возвращает инструкцию браузеру в другое место ( http: //alice.example .com / somethingelse.html ), который показывает браузер клиента.

Переписывание – это HTTP-метод для запроса запроса, который попадает в определенное место, изменяет его и затем отправляет на сервер-ответчик, не заставляя браузер клиента знать, что он произошел.

Виртуальный хост (vhost и т. Д.) Есть разные имена для одной и той же функции) – это метод HTTP, который позволяет вам отвечать на запрос разными способами, просматривая имя, которое использует запрос, часто, рассматривая заголовок HTTP Host это включено в каждый запрос. Возьмите вышеприведенное, например: клиентские запросы http://alice.example.com , который разрешает через DNS до 1.2.3.4, потому что alice является CNAME для bob.example.com. Запрос отправляется на тот же IP-адрес, 1.2.3.4, но веб-сервер, который там работает, отвечает на запрос с содержимым под / alice вместо / bob.

надеюсь, это поможет

Если вы хотите сделать это с помощью PHP, то, что вы обычно делаете, это настроить ваш веб-сервер для обслуживания всех поддоменов на определенном виртуальном хосте, который запускает все запросы через PHP-скрипт маршрутизации, который будет выполнять перенаправление. Что-то вроде этого:

<?php $map = array( "try.superman.com" => array( "/redirect-to-marvel/" => "http://spiderman.com/redirection/redirect-to-marvel/", ), ); if (isset($map[$_SERVER["HTTP_HOST"]]) { if (isset($map[$_SERVER["HTTP_HOST"]][$_SERVER["REQUEST_URI"]])) { header("Location: " . $map[$_SERVER["HTTP_HOST"]][$_SERVER["REQUEST_URI"]]); exit; } } header("Location: http://spiderman.com/404.php"); 

Существует много возможностей для улучшения, включая выполнение всего этого только с помощью mod_rewrite (или эквивалента вашего веб-сервера, но я предполагаю, что вы используете Apache здесь, поскольку вы упоминаете .htaccess ).

С PHP у вас есть возможность запросить базу данных для правильного перенаправления.