Похоже, вам нужен «обратный прокси», поскольку example.com
физически размещен на другом сервере. (Однако в комментариях вы заявляете, что «в будущем» example.com
вернется на тот же сервер - в то время вам может не понадобиться «обратный прокси-сервер», если субдомен и основной домен указывают на одну и ту же файловую систему - простая может потребоваться перезапись.)
Для настройки обратного прокси-сервера необходимо убедиться, что mod_proxy и mod_proxy_http (для HTTPS) включены и, возможно, некоторые другие (дополнительные) прокси-модули в зависимости от требований.
Для что вам требуется, когда вы передаете один и тот же URL-путь от источника к цели, вы можете использовать директивы ProxyPass
и ProxyPassReverse
в контейнере virtualhost для субдомена test.example.com
:
ProxyPass / http://example.com/test/
ProxyPassReverse / http://example.com/test/
В качестве альтернативы, если вам нужно более сложное отображение, или если вы хотите / должны сделать это в .htaccess
, тогда вы можете использовать mod_rewrite с флагом P
(как вы делаете выше):
RewriteEngine On
RewriteCond %{HTTP_HOST} ^test\.example\.com [NC]
RewriteRule ^ http://example.com/test%{REQUEST_URI} [P]
Важно, что вам нужен абсолютный URL (схема + имя хоста) в подстановке RewriteRule
(отсутствует в вашем примере).
Если этот хост только согласно epts запрашивает test.example.com
, тогда предыдущее условие не требуется.
Обратите внимание, что сервер REQUEST_URI
содержит префикс sla sh, поэтому его следует опустить в строке substitution, А поскольку вы используете серверную переменную REQUEST_URI
, а не обратную ссылку, вам не нужна группа захвата в шаблоне RewriteRule
. ie. ^(.*)$
можно упростить до ^
. L
не требуется при использовании с P
, поскольку подразумевается L
.