mod_rewrite和VirtualHosts:如何redirect1站点,但保留其他?

我在一个专用的CentOS 5.6服务器上托pipe4个虚拟主机:

# 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做redirect(即 – 直到我弄清楚如何将她的url完全转移到Tumblr,这也应该是可能的)。

从阅读文档我明白,我需要的东西,如:

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

但是把它放在哪里,以及如何让我的其他3个虚拟网站工作?

谢谢! 亚历克斯

(这不是上述任何网站的推广,我懒得在这里使用虚假的地址,没有看到原因)。

你不需要mod_rewrite这样简单的redirect。 使用mod_alias Redirect指令。

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

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

你的drupal站点的虚拟主机指令已经有了一个mod_rewrite部分,只是在你的其他站点的虚拟主机中复制了这个结构。 或者,您可以将mod_rewrite内容放置在要redirect的特定虚拟主机的Web根目录中的.htaccess文件中。