我有一個應用程式在 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]
解釋:
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
。 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