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)?将其存储在变量中?

我经历了宏,但宏需要将参数传递给它。我不知道在请求中要输入什么参数,可能是公司1,也可能是公司2......

答案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

相关内容