我正在将 Catchall 设置为 Apache vhost。这个想法是让这个 vhost 处理所有未按先前定义完成的请求,然后有条件地将它们重定向到另一个 URL。以下是我目前所做的:
<VirtualHost *:80>
ServerName default
ServerAlias *
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} (www\.)?wrongsite1.com$ [NC]
RewriteRule ^(.*)$ http://correctsite1.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} (www\.)?wrongsite2.com$ [NC]
RewriteRule ^(.*)$ http://correctsite2.com/$1 [R=301,L]
</IfModule>
</VirtualHost>
似乎在处理完第一条规则后,规则的处理并没有停止,即使它被设置为最后一条。也就是说,从错误站点 1 开始,我最终得到的 URL 为:http://correctsite1.com/http://correctsite2.com
我究竟做错了什么?
编辑:在最终版本中,将只有 2 个正确的站点 URL,以及多个 RewriteCond,使用 [OR]。
答案1
$ cat /etc/httpd/conf.d/_default.conf
<VirtualHost _default_:80>
Redirect / http://YOUR-URL-GOES.HERE
</VirtualHost>
$