Кажется, я нашел свою проблему - именно с RewriteRule, который перенаправил на старый сайт.
Вот что у меня было, когда я отправил вопрос:
# redirect everything to archive.example.com except for a few directories
RewriteCond %{REQUEST_URI} !^(/|/static|/blog|/about)$
RewriteRule ^/(.*)$ http://archive.example.com/$1 [NC,R=301,L]
... и я переписал это:
# redirect everything to archive.example.com except for a few directories
RewriteCond %{REQUEST_URI} !^/$
RewriteCond %{REQUEST_URI} !^/static.*$
RewriteCond %{REQUEST_URI} !^/blog.*$
RewriteCond %{REQUEST_URI} !^/about.*$
RewriteRule ^(.*)$ http://archive.example.com%{REQUEST_URI} [NC,R=301,L]
Вот почему.
Во-первых, как вы можете видеть, я разбил условие единственного перезаписи на четыре отдельных условия, потому что это позволит мне аккуратно добавлять дополнительные каталоги для исключения по мере роста нового сайта.
Вы также заметите, что после / static, / blog / и / about я добавил точку-звездочку, чтобы она соответствовала любому пути в этих каталогах, а не только верхнему уровню.
Наконец, в строке RewriteRule я удалил начальную косую черту из шаблона и изменил конечный / $ 1 на% {REQUEST_URI}. Мне не нужно хранить здесь какие-либо переменные из шаблона - мне просто нужно изменить имя сервера - поэтому вместо извлечения пути из шаблона я сделал его более явным, используя ту же самую переменную% {REQUEST_URI}, которая был использован в предыдущих четырех строках.
Кстати: одна из причин, по которой это сначала вызывало у меня путаницу, заключалась в том, что Chrome иногда кэшировал информацию о DNS / пути - выполнение Ctrl-F5 для очистки кэша позволит вам увидеть ваши изменения.