У нас есть простое приложение перенаправления 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 у вас есть возможность запросить базу данных для правильного перенаправления.