Apache は同じサブドメインにリダイレクトしますか?

Apache は同じサブドメインにリダイレクトしますか?

Tomcat の 8080 ポートでアプリケーションを実行しています。この VirtualHost 構成で正常に動作します。

<VirtualHost *:80>
     ServerAdmin [email protected]
     DocumentRoot /var/www/html
     ServerName www.subdomain.domain.com
    ServerAlias www.subdomain.domain.com *.subdomain.domain.com
     ErrorLog /var/log/apache2/subdomain.d/subdomain_er.log
     CustomLog /var/log/apache2/subdomain.d/subdomain_requests.log custom

     Redirect / https://subdomain.domain.es

</VirtualHost>

現在、新しいサーバーと、サブドメインをフィルターし、サブドメイン名に応じて異なる HTML と異なるスタイルシートをロードする新しいアプリケーションがあります (サブドメインは、独自のスタイルを指定するさまざまな会社によって作成されます)。

サブドメイン名を取得し、https を使用して同じサブドメインにリダイレクトすることは可能ですか? ServerName *.domain.com のようなもので、サブドメイン (*.domain.com) にリダイレクトしますか? それを変数に保存しますか?

マクロを実行しましたが、マクロにはパラメータを渡す必要があります。リクエストにどのパラメータが入力されるかわかりません。company1 かもしれませんし、company2 かもしれません...

答え1

あなたはリライトApache のモジュール。

まず、次のコマンドを使用して、Ubuntu で有効になっていることを確認します。

sudo a2enmod rewrite

仮想ホストに次の設定を追加すると、 のサブドメインはすべて のdomain.comサブドメインにリダイレクトされますdomain.es

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

説明:

  1. RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com$

    この条件は、ホストがパターン *.domain.com に一致するかどうかを調べ、一致したもの(.+)(つまりサブドメイン) を保存します。たとえば、パターンはdomain.com一致しませんが、次のパターンは一致します。

    • dan.domain.com
    • www.dan.domain.com
  2. RewriteRule ^/(.*)$ https://%1.domain.es/$1 [R=301,L]

    このルールは、Apache に のサブドメインにリダイレクトするように指示しますdomain.es。には%1、前のRewriteCondディレクティブに一致した値が含まれます。 には、$1このディレクティブに一致した値が含まれるため、パスをそのままにして、ドメインのルートにリダイレクトしないようにすることができます。

例:

  • dan.domain.comリダイレクトされますhttps://dan.domain.es
  • www.dan.domain.comリダイレクトされますhttps://www.dan.domain.es
  • dan.domain.com/exampleリダイレクトされますhttps://dan.domain.es/example
  • www.dan.domain.com/exampleリダイレクトされますhttps://www.dan.domain.es/example

関連情報