Как я могу использовать "перезапись мода" для перенаправления пути к папке на поддомен, но без перенаправления браузера?

У меня есть файл, который я хочу перенаправить на поддомен с помощью mod_rewrite. Например, я хотел бы перенаправить запрос на http://www.mydomain.com/xyz поддомен xyz.example.com

Я не хочу отправлять перенаправление в браузер (чтобы он не знал, что страница отличается).

КСТАТИ. xyz запись CNAME, указывающая на www.otherdomain.com.

Другой пример, чтобы прояснить. Если http://www.mydomain.com/xyz/something вводится в браузере, я хочу, чтобы Apache возвращал содержимое http://xyz.mydomain.com/something

Ответов (2)

Я ДУМАЮ, что это сделает то, что вы хотите:

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(.*?)/(.*?)$ http://$1.mydomain.com/$2

В этом случае он будет перенаправлять КАЖДЫЙ запрос, который идет в подпапку, поэтому, если вы ссылаетесь на изображения или CSS, которые находятся в подпапке, он также перепишет их, если вы хотите перечислить только определенные вещи, которые вы могли бы использовать

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(blog|store|other)/(.*?)$ http://$1.mydomain.com/$2

Это будет перенаправлять только mydomain.com/blog/ mydomain.com/store/ и mydomain.com/other/

Если оба домена находятся на одном компьютере и доступны через файловую систему, вам следует пойти этим путем. Например:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
RewriteRule ^([^/]+)/(.*) /absolute/path/to/subdomains/$1/$2

Если это не так, вам понадобится прокси:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
RewriteRule ^([^/]+)/(.*) http://$1.example.com/$2 [P]

Эти примеры предназначены для файла .htaccess. Если вы хотите использовать их в httpd.conf, добавьте к RewriteRule шаблонам префикс / .