Недавно я запустил новый веб-сайт, и один из отделов кампуса направил пользователей в виртуальный домен.
Например, www.ia.domain.com маскировался под собственный веб-сайт, который на самом деле был domain.com/ia.
Что я хочу сделать, так это перенаправить всех, кто попадает на www.ia.domain.com, на domain.com/ia,
а также www.ia.domain.com/faculty/ => domain.com/ia/faculty/
Это новая коробка, поэтому у нее нет исходной конфигурации.
Сайт работает на Apache с использованием linux (rhel5).
Я не знаком с mod_rewrite. Я сделал 301 редирект, но я не могу перенаправить таким образом виртуальный субдомен.
Вот то, что я ожидаю, будет работать в вашей конфигурации Apache (/etc/httpd/conf.d или /etc/apache2/conf.d, файл с именем, например, domain.com.conf):
Конечно, это может потребоваться отрегулировать в зависимости от того, какие другие конфигурации Apache у вас есть.
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.ia.example.com
ServerAlias ia.exmaple.com
Redirect permanent /(.*) http://www.example.com/ia/$1
</VirtualHost>
<VirtualHost *:80>
# Your normal website configurations here
</VirtualHost>
Шон
Вам понадобится виртуальный хост на основе имени, настроенный для www.ia.domain.com.
В блоке конфигурации виртуального хоста следующее правило для mod_rewrite должно помочь:
RewriteRule ^/(.*) http://domain.com/ia/$1 [R]
Как насчет того, чтобы не использовать mod_rewrite и вместо этого использовать оператор перенаправления.
#Virtual Host for IA sub web
<VirtualHost *:80>
ServerName www.ia.domain.com
ServerAlias <other domain names they want to associate with this directory; ex: ia.domain.com>
Redirect permanent / http://www.domain.com/ia_new_web_location/
</VirtualHost>
если вы хотите прозрачное перенаправление, попробуйте следующее:
rewriteCond %{HTTP_HOST} ^www.ia.domain.com
rewriteRule ^/faculty(.*) domain.com/ia/faculty$1 [P]
Сервер apache использует прокси-модуль (вам нужно включить прокси-модуль), чтобы сделать прозрачное перенаправление (без 301 или 302 http-кода)