Привет, я пытаюсь разрешить пользователям сопоставлять нам домен с помощью CNAME. На нашем сервере работает CentOS 6.4 и Apache. Когда я создаю CNAME в другом домене, у нас есть значения:
test.otherdomain.com -> app.example.com
Запрос загружает www.example.com. Это первое правило в моих VHOSTS, которые упорядочены следующим образом;
:80
ServerName www.example.com
ServerAlias example.com
:443
ServerName www.example.com
ServerAlias example.com
:80
ServerName sub1.example.com
:443
ServerName sub1.example.com
:80
ServerName sub2.example.com
:443
ServerName sub2.example.com
:80
ServerName app.example.com
ServerAlias *.example.com
:443
ServerName app.example.com
ServerAlias *.example.com
* .Example.com позволяет пользователям создавать собственные поддомены, чтобы они могли создавать все, кроме www, sub1 или sub2. Пример: acme.example.com.
После некоторого исследования я понял, что проблема в том, что переданный хост не соответствует ни одному из моих правил, поэтому обслуживается первый определенный сайт? Как я могу создать сайт по умолчанию или поймать весь сайт, который будет обслуживать app.example.com, когда пользователь посещает test.otherdomain.com?
Пользователи вводят свой домен в форму в нашем приложении, поэтому я не могу добавить их все в свою запись vhost как псевдонимы. Если я поставлю app.example.com в качестве первого правила (без подстановочного псевдонима) и снова в конце файла с подстановочным псевдонимом, Apache, по-видимому, предпочтет правило с подстановочными знаками и статические поддомены sub1 и sub2 перенаправляют на приложение.
Спасибо!
При использовании виртуального хостинга на основе имен первая запись VHOST, определенная в Apache, является общей записью для всех имен хостов, которые не совпадают ни с чем другим.
Поскольку вы упомянули, что хотите app.example.com VHOST будет обслуживаться первым, вы должны убедиться, что он первый определен в вашей конфигурации Apache. Есть несколько способов добиться этого:
_default.conf
)ФИКСИРОВАННЫЙ!
Первое правило ДОЛЖНО быть по умолчанию. Изменение таких правил заставило его работать:
:80
ServerName app.example.com
:443
ServerName app.example.com
:80
ServerName www.example.com
ServerAlias example.com
:443
ServerName www.example.com
ServerAlias example.com
:80
ServerName sub1.example.com
:443
ServerName sub1.example.com
:80
ServerName sub2.example.com
ServerAlias *.example.com
:443
ServerName sub2.doexampleain.com
ServerAlias *.example.com
Это позволяет sub1 быть статическим, а поскольку sub2 / sub3 использовались только для потоковой передачи дополнительных вызовов AJAX, они были мини-версиями приложения. Переместив этот код в основное приложение и изменив подстановочный знак, чтобы он не был частью правила приложения, все работает!