Я настраиваю Catchall как виртуальный хост Apache. Идея состоит в том, чтобы этот 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-адреса сайта с несколькими RewriteConds с использованием [OR].
$ cat /etc/httpd/conf.d/_default.conf
<VirtualHost _default_:80>
Redirect / http://YOUR-URL-GOES.HERE
</VirtualHost>
$