У нас есть простое приложение перенаправления на основе php.
Вот пример:
spiderman.com/redirection/redirect-to-marvel/
Скрипт php находится в папке «redirection» и, допустим, он перенаправит вышеуказанную ссылку на 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/somewhereelse.html), который показывает браузер клиента.
Перезапись — это метод HTTP, который принимает запрос, который попадает в определенное место, изменяет его и затем отправляет на автоответчик, не обязательно сообщая браузеру клиента о его получении.
Виртуальный хост (vhost и т. Д. … существуют разные имена для одной и той же функции) — это метод HTTP, который позволяет по-разному отвечать на запрос, просматривая имя, используемое в запросе, часто проверяя заголовок узла HTTP. это включено в каждый запрос. Возьмем, к примеру, выше: клиентские запросы http://alice.example.com, который разрешается через DNS к 1.2.3.4, потому что Алиса является 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 у вас есть возможность запросить базу данных для правильного перенаправления.