Apache redireciona para o mesmo subdomínio?

0

Eu tenho um aplicativo em execução na porta 8080 no tomcat.E funciona bem com esta configuração do 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>

Agora eu tenho um novo servidor e um novo aplicativo que filtra o "subdomínio" e carrega diferentes htmls e diferentes folhas de estilo dependendo do nome do subdomínio (subdomínio é criado por diferentes comapnies que especificam seus próprios estilos).

É possível obter o nome do subdomínio e redirecionar para o mesmo subdomínio usando https? Algo como ServerName * .domain.com e redirecionar para qualquer que seja o subdomínio (*. Domain.com)? Armazená-lo em uma variável?

Eu passei pela macro, mas o macro precisa dos parâmetros a serem passados para ela. Não sei quais parâmetros serão inseridos na solicitação, pode ser company1, pode ser company2 ...

    
por Georgi Dzhondzhov 07.11.2017 / 11:01

1 resposta

0

Você pode usar o módulo Reescrever do Apache.

Primeiro, verifique se ele está ativado no Ubuntu com o seguinte comando:

sudo a2enmod rewrite

Se você adicionar a seguinte configuração ao seu host virtual, qualquer subdomínio de domain.com será redirecionado para um subdomínio de domain.es .

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

Explicação:

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

    Essa condição examinará se o host corresponde ao padrão * .domain.com e armazenará o que foi correspondido com (.+) (ou seja, o subdomínio). Por exemplo, o padrão domain.com não corresponderá, enquanto os seguintes padrões corresponderão:

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

    Esta regra instrui o Apache a redirecionar para um subdomínio de domain.es . %1 contém o valor correspondente na diretiva RewriteCond anterior. Enquanto $1 contém o valor correspondido nesta diretiva, você pode manter o caminho como está e não redirecionar para a raiz do domínio.

Exemplos:

  • dan.domain.com redirecionará para https://dan.domain.es
  • www.dan.domain.com redirecionará para https://www.dan.domain.es
  • dan.domain.com/example redirecionará para https://dan.domain.es/example
  • www.dan.domain.com/example redirecionará para https://www.dan.domain.es/example
por Dan 07.11.2017 / 12:04