Если они не размещены на одном и том же сервере, вам понадобится флаг Proxy. Это также требует наличия прокси-модуля. Не проверено:
RewriteCond %{HTTP_HOST} ^x.domain.com$
RewriteRule ^(.*)$ http://y.domain.com/$1 [P]
РЕДАКТИРОВАТЬ: Учитывая изменения вашего вопроса, они, вероятно, просто на одном сервере. Итак, действительно, как предположил Джетру, Alias мог бы сделать. Или:
# No RewriteCond required; serve all content from other folder:
RewriteRule ^(.*)$ /path/to/y.domain.folder/$1
РЕДАКТИРОВАТЬ: Выше не будет изменять заголовок HTTP_HOST, который был отправлен браузером (возможно, это можно сделать также). Это подразумевает, что это будет работать, только если субдомены представлены в файловой системе как отдельные каталоги. Таким образом, поскольку .htaccess
будет помещен в каталог, содержащий веб-сайт для x.domain.com, RewriteCond
даже не потребуется. Кроме того, каталог для этого поддомена x.domain.com фактически не будет нуждаться в HTML-содержимом; в итоге весь контент будет обслуживаться из каталога другого субдомена.
РЕДАКТИРОВАТЬ: Поскольку вышеприведенное, кажется, тоже не работает, и дает бесконечные циклы перезаписи, даже при добавлении [NS], может быть, простое добавление [L] помогает здесь:
RewriteRule ^(.*)$ /path/to/y.domain.folder/$1 [NS,L]
Или, может быть, можно установить переменную окружения, чтобы остановить цикл:
RewriteCond %{ENV:MY_VAR} !=1
RewriteRule ^(.*)$ /path/to/y.domain.folder/$1 [E=MY_VAR:1]
Но для [L] и [E]: я просто догадываюсь; Я никогда не заставлял mod_rewrite
прыгать в каталог другого виртуального хоста. Я не уверен, что это можно сделать для начала.
К сожалению, неясно, как добавить новый поддомен. Если нужно просто создать новый каталог с именем субдомена (без какого-либо использования какого-либо инструмента администрирования), тогда поставщик может использовать переписывание всей системы. На самом деле, даже без поддоменов, провайдер может использовать массовый виртуальный хостинг , как описано в URL Rewrite Guide .
Я полагаю, что лучшим решением было бы изменить значение HTTP_HOST на лету, чтобы решить проблемы с любым переписыванием всей системы. Возможно, для этого разрешено следующее:
RewriteCond %{HTTP_HOST} ^x.domain.com$
RewriteRule ^(.*)$ /path/to/y.domain.folder/$1 [E=HTTP_HOST:y.domain.com]
Опять же, поскольку вышеупомянутое будет присутствовать только в .htaccess
в папке x.domain.fi, RewriteCond
, вероятно, вообще не нужен.