Как я могу замаскировать домен, используя .htaccess? - PullRequest
1 голос
/ 22 января 2020

У нас следующая ситуация:

Мы хотели бы настроить маскирование домена, чтобы предоставить контент с платформы проекта конечному пользователю. Конечный пользователь настроил запись CNAME от player.domain-client.com. до app.domainA.com

Теперь, когда конечный пользователь вводит https://player.domain-client.com/5432, он должен получить содержимое https://app.domainA.com/player/?=5432. Но URL должен остаться https://player.domain-client.com/5432. Эта маскировка должна применяться только в том случае, если клиентский поддомен содержит player.

Может ли кто-нибудь указать мне правильное направление, как настроить .htaccess, чтобы он выполнял правильную маскировку?

1 Ответ

0 голосов
/ 22 января 2020

Конечный пользователь установил запись CNAME с player.domain-client.com. до app.domainA.com

Предположительно, "платформа проекта" также настроена на прием запросов на player.domain-client.com ?

В таком случае, это должно быть просто вопросом внутренней перезаписи (на том же хосте). Хотя, если вы обычно запрашиваете тот же URL-путь в app.domainA.com, ie. app.domainA.com/5432, тогда вам ничего не нужно делать, поскольку перезапись уже на месте? В противном случае попробуйте следующее:

RewriteEngine On

# Rewrite any request for /<number> to player/?=<number>
RewriteCond %{HTTP_HOST} ^player\. [NC]
RewriteRule ^(\d+)$ player/?=$1 [L]

Однако /player/?=5432 не является фактической конечной точкой, поскольку это требует дальнейшей перезаписи системой для ее работы. Возможно, вы имеете в виду что-то вроде /player/index.php?=5432? (Строка запроса также немного странная, так как вам не хватает параметра name ? Как написано, это может потребовать ручного анализа строки запроса для извлечения значения?)

ОБНОВЛЕНИЕ # 1: Условие (директива RewriteCond) гарантирует, что только запросы к поддомену player будут перезаписаны.

ОБНОВЛЕНИЕ № 2: В WordPress необходимо убедиться, что эти директивы go перед фронт-контроллером WP. ie. До раздела # BEGIN WordPress. Порядок директив в .htaccess важен.

Однако, если все это управляется WordPress, вы не можете просто создать перезапись в .htaccess, так как WordPress по-прежнему видит исходный URL, который был запрошен , а не переписанный URL. Таким образом, если запрошенный URL-адрес не существует в качестве действительного маршрута в самом WordPress, вы, вероятно, получите 404. Этот вид перезаписи должен управляться внутри самого WordPress.

ОБНОВЛЕНИЕ № 3: Альтернативой является настройка вашего сервера в качестве обратного прокси и прокси запроса от https://player.domain-client.com/1234 до https://app.domainA.com/player/?vid=1234 (упоминается в комментариях). В идеале для этого требуется доступ к конфигурации главного сервера для правильной настройки (требуются директивы mod_proxy и ProxyPass, ProxyPassReverse, установленные на виртуальном хосте).

Затем в .htaccess вы будете делать что-то вроде вместо этого, используя флаг P на RewriteRule:

# Proxy any request for /<number> to player/?=<number>
# for the "player" subdomain only.
RewriteCond %{HTTP_HOST} ^player\. [NC]
RewriteRule ^(\d+)$ https://app.domainA.com/player/?vid=$1 [P]
...