我正在build立一个Catchall作为Apache虚拟主机。 这个想法是让这个虚拟主机进程处理所有先前定义没有完成的请求,然后有条件地将它们redirect到另一个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 ://correctsite1.com/http://correctsite2.com
我究竟做错了什么?
编辑:在最终版本中,将只有2个正确的网站URL,与几个RewriteConds,使用[OR]。
$ cat /etc/httpd/conf.d/_default.conf <VirtualHost _default_:80> Redirect / http://YOUR-URL-GOES.HERE </VirtualHost> $