2009-02-09 16 views
1

У меня есть дополнительный домен, который я хочу перенаправить в другое место, используя mod_rewrite. Например:Переписывание поддомена CNAME

subdomain.example.com -> www.example.com/subdomain

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

BTW subdomain.example.com имеет запись CNAME, указывающую на example.com.

Редактировать

Другой пример, просто уточнить. Это очень просто: если в браузер вводится http://x.abc.com, Apache возвращает содержимое http://www.abc.com/x.

ответ

1

В дополнение к тому, что указано выше, вы можете использовать оператор Apache VirtualDocumentRoot для динамического сопоставления URL-адресов динамическому местоположению на диске. Он позволяет использовать части URL для создания пути на диске. Проверить эту ссылку для получения дополнительной информации:

http://httpd.apache.org/docs/2.2/mod/mod_vhost_alias.html

Пример:
URL = http://sub.example.com/dir/page.html
Server Path = /var/www/site.com/htdocs/sub/dir/page.html
VirtualDocumentRoot = /var/www/%-2.0.%-1.0/htdocs/%-3/

3

Если оба домена разделяют один и тот же каталог, вы можете сделать это, чтобы переписать запросы внутренние:

RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com$ 
RewriteRule !^subdomain/ subdomain%{REQUEST_URI} 

После того, как вопрос был выяснен: Это один работает для меня:

RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com$ 
RewriteCond %1.%{THE_REQUEST} ^([^.]+)\.[A-Z]+\ (/[^\ ]*) 
RewriteCond %{DOCUMENT_ROOT}$1 !-d 
RewriteRule ^([^/]+)? %1%2 

Но вам лучше пойти с тем, что сказал Brandon.

+0

Я не уверен, что следовать вашему примеру выше, но то, что я хочу сделать, это очень просто: если http://x.abc.com введен в браузер, Apache возвращает содержимое http://www.abc.com/x. Благодаря! –

0
RewriteCond %{HTTP_HOST} ^([^.]+)\.abc\.com$ 
RewriteRule ^(.*)$  http://www.abc.com/%1$1 [R=301]