Как перенаправить весь поддомен с подстановочными знаками на конкретный поддомен? Возникли проблемы с поддоменом, на котором работает сервер nextcloud

Мне нужны поддомены с подстановочными знаками, которые не существуют, например x.example.com , y.example.com и т. Д. , чтобы перенаправить на 404.example.com .

Я использую Apache 2.4. Как я могу это сделать?

Что я пробовал:

Мой 404.conf:

<VirtualHost *:80>
    ServerName 404.example.com
    ServerAlias *.example.com

    ServerAdmin webmaster@localhost
    DocumentRoot "/var/web/404"

    ErrorLog ${APACHE_LOG_DIR}/404-error.log
    CustomLog ${APACHE_LOG_DIR}/404-access.log combined
</VirtualHost>

<VirtualHost *:443>
    ServerName 404.example.com
    ServerAlias *.example.com

    ServerAdmin webmaster@localhost
    DocumentRoot "/var/web/404"

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    SSLCertificateFile /fullchain.pem
    SSLCertificateKeyFile /privkey.pem
</VirtualHost>

<Directory "/var/web/404">
    Options FollowSymlinks ExecCGI
    AllowOverride None
    Require all granted
</Directory>

Это действительно сработало. 123l4k.example.com перенаправляется на 404.example.com . Но субдомен nextcloud, nc.example.com , также перенаправляет на 404.example.com . Другие субдомены работают нормально.

Мне нужно отключить virutalhost 404.conf , чтобы иметь доступ к субдомену nextcloud.

Мой nc.conf:

Alias /nextcloud /var/web/nextcloud/

<VirtualHost *:80>
  ServerName nc.example.com
  ServerAlias nextcloud.example.com
  DocumentRoot "/var/web/nextcloud/"

  RedirectPermanent / https://nc.example.com

  ErrorLog ${APACHE_LOG_DIR}/nextcloud_error.log
  CustomLog ${APACHE_LOG_DIR}/nextcloud_access.log combined

#RewriteLog "/var/log/apache2/nextcloud_rewrite.log"
</VirtualHost>

<VirtualHost *:443>
  ServerName nc.example.com
  ServerAlias nextcloud.example.com
  DocumentRoot "/var/web/nextcloud/"

  ErrorLog ${APACHE_LOG_DIR}/nextcloud_error.log
  CustomLog ${APACHE_LOG_DIR}/nextcloud_access.log combined

  SSLCertificateFile /fullchain.pem
  SSLCertificateKeyFile /privkey.pem
</VirtualHost>


<Directory "/var/web/nextcloud/">
  Options +FollowSymlinks +ExecCGI
  AllowOverride None
  Require all granted

 <IfModule mod_dav.c>
  Dav off
 </IfModule>

 SetEnv HOME "/var/web/nextcloud"
 SetEnv HTTP_HOME "/var/web/nextcloud"
</Directory>

<Directory "/var/web/nextcloud/data/">
  Require local
</Directory>

Как мне сохранить поведение доменов с подстановочными знаками, перенаправляющего на 404.example.com , и получить доступ к моему серверу nextcloud на nc.example.com ?

0
задан 30 August 2017 в 23:52
1 ответ

Веб-сервер Apache читает файлы конфигурации vhost в алфавитном порядке. Это означает, что файлы 404.conf читаются перед файлом nc.conf . Таким образом, хост сначала сопоставляется с директивой ServerAlias ​​* .example.com , это совпадает, а другие vhosts игнорируются. При переименовании файла nc.conf в 00_nc.conf конфигурация Nextcloud будет загружена первой и, таким образом, будет сопоставлена ​​с nextcloud.example.com, а другой домен сопоставлен с 404 .conf , который загружается позже.

0
ответ дан 24 November 2019 в 03:57

Теги

Похожие вопросы