#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-сертификатах остановило функцию перенаправления. После загрузки необходимых сертификатов все работало так, как ожидалось. Надеюсь, что этот ответ поможет кому-то нуждающемуся в будущем. Спасибо.