Была настроена связка apache (mod_vhost_alias) + mpm-itk для массового виртуального хостинга. Используется для тестирования различных cms (wp, drupal, joomla). Для каждого проекта используется свой виртуальный хост со своим пользователем. Конфиг апача имеет вид
NameVirtualHost *:80
Listen *:80<VirtualHost *:80>
ServerName *.domain1.com
UseCanonicalName Off
VirtualDocumentRoot /vhosts/domain1.com/%1
DirectoryIndex index.php index.html
AssignUserFromPath "^/vhosts/domain1.com/([^/]+)" service1_$1 service1_$1
<Directory /vhosts/domain1.com>
Options -Indexes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Ну и соотв каждый проет получал url вида http://project_name.domain1.com/. Все отлично работает, но вот захотелось руководству сменить имя домена на example.net, но при этом сделать так, чтобы при заходе по старой ссылке происходила автоматическая переадресация на новое имя. Вот обственно с последней частью и возникла проблема.
Сейчас записи в обеих доменах указывают на один и тот же хост, т.е.
*.domain1.com IN A xxx.xxx.xxx.xxx
*.example.net IN A xxx.xxx.xxx.xxx
После всех изменений на сервере конфигурационные файлы для доменов имеют вид
# /etc/httpd/conf.d/domain1.com.conf
<VirtualHost *:80>
ServerName *.domain1.com DocumentRoot /vhosts/domain1.com/temp_redirect/
AssignUserID apache apache
<Directory /vhosts/domain1.com/temp_redirect/>
Options -Indexes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Т.е. я все проекты для старого домена направляю в одну папку, где лежит один .htaccess, который и должен осуществлять редирект
RewriteBase /RewriteCond %{HTTP_HOST} ^([^.]+)\.domain1.com
RewriteRule .* http://%1.example.net/ [L,QSA,R]
Файл для нового домена имеет вид
# /etc/httpd/conf.d/example.net.conf
NameVirtualHost *:80
Listen *:80<VirtualHost *:80>
ServerName *.example.net
UseCanonicalName Off
VirtualDocumentRoot /vhosts/domain1.com/%1
DirectoryIndex index.php index.html
AssignUserFromPath "^/vhosts/domain1.com/([^/]+)" service1_$1 service1_$1
<Directory /vhosts/domain1.com>
Options -Indexes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Но при попытке открыть старую ссылку, т.е. http://project_name.domain1.com/ не происходит никакого редиректа. Кроме того, если я открываю не существующий проект, например http://nonexist_project.domain1.com/, то получаю 500ю ошибку, а в логах апача вижу, что он не находит пользователя от которого будет запущен виртуальный хост, т.е. получается что хосты для домена domain1.com почему то матчатся конфигурационным файлом example.net.conf. Ведь именно в нем используется параметр AssignUserFromPath
[Sat Oct 06 18:13:50 2012] [warn] (itkmpm: pid=3738 uid=0, gid=0) itk_post_perdir_config(): /vhosts/domain1.com/nonexist_project: No such user: 'service1_nonexist_project' (regex: '^/vhosts/domain1.com/([^/]+)', pattern: 'service1_$1')
Собственно как добиться редиректа?