Apache 仮想ホストの https サブドメインからサブディレクトリへのリダイレクト

Apache 仮想ホストの https サブドメインからサブディレクトリへのリダイレクト

リクエストをリダイレクトするにはどうすればいいですか?https://blog.example.comhttps://example.com/blog?

Apacheのドキュメントを読んで、書き換えモジュールを使用しない場合について、簡単なリダイレクトを試してみました。

Redirect https://blog.example.com https://example.com/blog

しかし私が訪問するとhttps://blog.example.com、リダイレクトされません。証明書のエラーのみが表示されます。HTTPS サブドメインをリダイレクトする可能性はありますか? 次のようにすると、HTTP で正常に動作します。

<VirtualHost *:80>
    ServerName blog.example.com
    Redirect / https://example.com/blog/
</VirtualHost>

次のような条件:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^([^\.]+)\.example\.com$
RewriteRule ^/(.*)$ https://example.com/%1/$1 [R=301,L]

HTTPS ではなく HTTP を使用している場合にのみ機能します...

ありがとう。

答え1

設定はVirtualHost *:80、つまりhttpポートに適用されます。 のポートhttpsは 443 です。その設定を見つけて、そこにもリダイレクトを適用します。

答え2

そのために mod_alias を使用できると思います。

blog.example.com 仮想ホストで:

RedirectMatch (.*)$ / https://example.com/blog/$1

Apache 2.4 の mod モジュールは、以下の URL からダウンロードできます。

答え3

ブラウザが証明書エラーをフラグ付けすると、トランザクションが中断されます。前にリダイレクトが実行されます。HSTS を使用しない場合は、エラーをクリックしてこれを確認でき、リダイレクトは通常どおり続行されます。エラー自体はいくつかの理由で発生する可能性があり、ブラウザには該当する理由が表示されますが、最も可能性が高いのは、証明書が のみに有効であり、 の SAN エントリ(またはワイルドカード)example.comがないことです。これを修正するには、この追加の名前を含めるように証明書を再生成するか、追加の証明書を取得して、この証明書をサブドメインに提供するようにサーバー構成を調整します。どちらの場合でも、選択した証明書プロバイダー (CA) がサポートできるはずです。blog.example.com*.example.com

関連情報