301 Перенаправление домена без www работает, но с www не работает

#regex #apache #redirect #mod-rewrite #http-status-code-301

#регулярное выражение #apache #перенаправление #мод-перезапись #http-status-code-301

Вопрос:

В настоящее время я работаю над запросом как на перенаправление домена A в домен B, так и на перенаправление определенной страницы в домене A в домен B. Вот ожидание в псевдокоде:

 foo.com =====> https://www.bar.com
foo.com/foo =====> https://www.bar.com/bar
  

и:

 www.foo.com =====> https://www.bar.com
www.foo.com/foo =====> https://www.bar.com/bar
  

Однако только перенаправления, не относящиеся к www, работают должным образом, а перенаправления www вообще не функционируют. По сути, первый набор перенаправлений выше работает, а второй набор — нет.

Вот мой файл Vhost:

 <VirtualHost *:80>
  ServerName foo.com
    ServerAlias www.foo.com
    ErrorLog /etc/httpd/logs/foo.com-error.log
  Include /etc/httpd/conf.d/rewrite_rules/foo.com.rewrite
</VirtualHost>
  

Мое правило перезаписи:

 RewriteEngine On
RewriteRule ^/foo$  https://www.bar.com/bar  [R=301,L,NC]
RewriteRule (.*) https://www.bar.com  [R=301,L,NC]
  

Что странно, когда я тестирую curl на тестовом сервере, кажется, что URL перенаправляется:

 301 http://www.foo.com/ https://www.bar.com
  

У меня такое чувство, что я чего-то не хватает в моем правиле перезаписи. Кто-нибудь может посоветовать по проблеме? Заранее спасибо за вашу помощь.

Ответ №1:

Выяснил ответ на этот вопрос. Как оказалось, все действующие правила функциональны и работают по назначению; однако SSL-сертификат на сервере вызывал ошибку несоответствия.

Это несоответствие в SSL-сертификатах остановило функцию перенаправления. После загрузки необходимых сертификатов все работало так, как ожидалось. Надеюсь, что этот ответ поможет кому-то нуждающемуся в будущем. Спасибо.