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]
説明:
RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com$
この条件は、ホストがパターン *.domain.com に一致するかどうかを調べ、一致したもの
(.+)
(つまりサブドメイン) を保存します。たとえば、パターンはdomain.com
一致しませんが、次のパターンは一致します。dan.domain.com
www.dan.domain.com
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