我在专用的 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 文件中。