У меня есть файл, который я хочу перенаправить на субдомен с помощью 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
Ответ 1 · рейтинг 2 · UnkwnTech
Я ДУМАЮ, это сделает то, что вы хотите:
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/
Ответ 2 · рейтинг 1 · Gumbo
Если оба домена находятся на одном компьютере и доступны через файловую систему, вам следует пойти по этому пути. Например:
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 префикс /.