Назад | Перейти на главную страницу

mod_rewrite и VirtualHosts: как перенаправить 1 сайт, а остальные оставить?

Я размещаю 4 виртуальных хоста на выделенном сервере CentOS 5.6:

# rpm -qa|grep http
httpd-2.2.3-45.el5.centos.1

Один из них - мой сайт Drupal 7.2, а другой - статические тексты и фотографии, принадлежащие моей жене - вот выдержка из httpd.conf:

<VirtualHost 85.214.19.116:80>
    DocumentRoot /var/www/html/preferans.de
    ServerName preferans.de
    ServerAlias preferans.de *.preferans.de
    ErrorLog logs/preferans.de/error_log
    CustomLog logs/preferans.de/access_log common
    <IfModule mod_rewrite.c>
        <Directory "/var/www/html/preferans.de">
            RewriteEngine on

            # needed by Drupal 7 for "clean URLs"
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteCond %{REQUEST_URI} !=/favicon.ico
            RewriteRule ^ index.php [L]
        </Directory>
    </IfModule>
</VirtualHost>

<VirtualHost 85.214.19.116:80>
    DocumentRoot /var/www/html/larissa-farber.de
    ServerName larissa-farber.de
    ServerAlias larissa-farber.de *.larissa-farber.de
    ErrorLog logs/larissa-farber.de/error_log
    CustomLog logs/larissa-farber.de/access_log common
</VirtualHost>

Теперь моя жена решила переместить свои файлы в службу блогов Tumblr.

В качестве быстрой меры я поместил в ее каталог следующий index.php:

# cat /var/www/html/larissa-farber.de/index.php
<?php
header('Location: http://larissa-farber.tumblr.com/');
?>

Это работает нормально, но я бы предпочел использовать mod_rewrite для перенаправления (то есть - пока я не выясню, как полностью передать ее веб-адрес в Tumblr, что тоже должно быть возможно).

Из чтения документов я понимаю, что мне нужно что-то вроде:

RewriteRule ^(.*)$ http://larissa-farber.tumblr.com/$1 [R=301,L]

Но куда его поставить и как поддерживать работу остальных 3 моих виртуальных сайтов?

Спасибо! Alex

(Это не продвижение какого-либо из вышеперечисленных сайтов, мне просто лень использовать здесь фальшивые адреса и не вижу для этого причины).

Тебе не нужно mod_rewrite для таких простых редиректов. Использовать Перенаправить директива от mod_alias.

Поместите подписку в VirtualHost раздел с ServerName larissa-farber.de:

Redirect permanent / http://larissa-farber.tumblr.com/

В директиве вашего виртуального хоста для вашего сайта drupal уже есть раздел mod_rewrite, просто продублируйте эту структуру в виртуальном хосте для другого вашего сайта. В качестве альтернативы вы можете разместить содержимое mod_rewrite в файле .htaccess в корневом веб-каталоге конкретного виртуального хоста, который вы хотите перенаправить.