Apache перенаправляет на тот же поддомен?

Apache перенаправляет на тот же поддомен?

У меня есть приложение, работающее на порту 8080 на tomcat. И оно отлично работает с этой конфигурацией 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]

Объяснение:

  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

Связанный контент