Apache 重定向到相同的子網域?

Apache 重定向到相同的子網域?

我有一個應用程式在 tomcat 的 8080 連接埠上運行。

<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)?將其儲存在變數中?

我經歷了宏,但宏需要將參數傳遞給它。

答案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。 While$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

相關內容