mod_rewrite 和 VirtualHosts:如何重定向 1 个站点,但保留其他站点?

mod_rewrite 和 VirtualHosts:如何重定向 1 个站点,但保留其他站点?

我在专用的 CentOS 5.6 服务器上托管了 4 个虚拟主机:

# 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

(这并不是对上述任何网站的推广,我只是懒得在这里使用虚假地址,而且也不明白这样做的理由)。

答案1

你不需要mod_rewrite这样简单的重定向。使用重定向的指令mod_alias

将以下内容放入VirtualHost部分ServerName larissa-farber.de

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

答案2

您的 drupal 站点的虚拟主机主机指令已包含 mod_rewrite 部分,只需在其他站点的虚拟主机中复制该结构即可。或者,您可以将 mod_rewrite 内容放在要重定向的特定虚拟主机的 Web 根目录中的 .htaccess 文件中。

相关内容