Apache Configureren: Subdomeinen Toewijzen aan Mappen in het Filesystem

 Apache-functie genaamd VirtualDocumentRoot, in combinatie met de wildcard-DNS-instelling die waarschijnlijk al is geconfigureerd voor het domein *..be. Dit is hoe het werkt:

Uitleg van de configuratie

1. VirtualHost <VirtualHost 176.9.220.33:80>

Deze directive bepaalt dat Apache luistert naar inkomend HTTP-verkeer op het IP-adres 176.9.220.233 en poort 80.

2. ServerAlias *..be

De ServerAlias-directive zorgt ervoor dat alle subdomeinen van .be (zoals .be, test..be, enzovoort) door deze VirtualHost-configuratie worden behandeld.

3. VirtualDocumentRoot

De kern van de configuratie is:

VirtualDocumentRoot /var/www/static/be_/subdomains/%1
 

 %1 wordt hier vervangen door het eerste deel van het subdomein. Bijvoorbeeld:Voor ..be wordt %1 vervangen door immofrancois. Voor test..be wordt %1 vervangen door test.Dit betekent dat Apache automatisch de map /home/admin/static/be_/subdomains/immofrancois gebruikt als de document root voor http://..be. Er is geen extra script nodig; Apache wijst simpelweg op basis van het subdomein naar de corresponderende map in het bestandssysteem.

Redirect all http requests

<VirtualHost 176.9.220.33:80>
    ServerName .be
    ServerAlias *..be

    # Gebruik mod_rewrite voor dynamische redirects
    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [R=301,L]


    # Loggen voor debugging
    LogLevel warn
    ErrorLog /var/log/apache2/_http_error.log
    CustomLog /var/log/apache2/_http_access.log combined
</VirtualHost>

HTPPS configuratie

 <VirtualHost 176.9.220.33:443>
    ServerName .be
    ServerAlias *..be

    # SSL-configuratie
    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/leads/.crt
    SSLCertificateKeyFile /etc/apache2/ssl/leads/.key
    SSLCertificateChainFile /etc/apache2/ssl/leads/.crt

    # Basis configuratie
    AddDefaultCharset utf-8

    # VirtualDocumentRoot voor subdomeinen
    VirtualDocumentRoot /home/admin/static/be_/subdomains/%1

    # Directory-instellingen
    <Directory /home/admin/static/be_/subdomains/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>

    # Alias voor statische bestanden
    Alias /static/ /var/www/be_/static/
    <Location "/static">
        SetHandler None
        Options -Indexes
        AddType text/html php
    </Location>

    Alias /media/ /var/www/be_/media/
    <Location "/media">
        SetHandler None
        Options -Indexes
        AddType text/html php
    </Location>

    # Limiteren van uploadgrootte (optioneel)
    LimitRequestBody 5120000

    # Loggen
    LogLevel warn
    ErrorLog /var/log/apache2/_https_error.log
    CustomLog /var/log/apache2/_https_access.log combined
</VirtualHost>

404 in root https://.be debugen

 # Loggen
    LogLevel trace4
    ErrorLog /var/log/apache2/a_https_error.log
    CustomLog /var/log/apache2/_https_access.log "%v:%p %h %l %u %t \"%r\" %>s %O file=%f"


.be:443 178.51.15.28.- - [28/Dec/2024:22:11:53 +0100] "GET / HTTP/1.1" 404 7430 file=/var/www/static/be_/subdomains/ Nu print hij het goed in ik zie goed waar alle fouten naar toe gaan. # 

Het is goed om te zien dat je nu precies kunt zien waar Apache naar bestanden zoekt dankzij de uitgebreide logging. Hier is een overzicht van wat je nu kunt doen op basis van deze informatie:

  • De server probeert bestanden te laden uit /home/admin/static/be_/subdomains/ in plaats van /home/admin/static/be_/main.
  • De bestandslocatie niet overeenkomt met de verwachte DocumentRoot, wat leidt tot de 404-fout.
  •  

    Probleem: Onverwachte Bestandslocatie

    Apache zoekt blijkbaar in /home/admin/static/be_/subdomains/ in plaats van in de geconfigureerde DocumentRoot.

    Mogelijke oorzaken:

    1. VirtualDocumentRoot in gebruik: Als er een VirtualDocumentRoot-instelling is in je configuratie, kan deze automatisch subdomeinen omzetten naar submappen.

      Controleer je configuratiebestanden op een regel zoals:

      VirtualDocumentRoot /home/admin/static/be_/subdomains/%1
       

    2. ServerAlias of ServerName conflicteert: Als de ServerAlias wildcard (*..be) gebruikt, kan het verkeer naar een onverwachte map worden gestuurd.

    3. RewriteRules die paden manipuleren: Als er mod_rewrite-regels actief zijn, kunnen die de locatie van bestanden aanpassen.

       Oplossing

      Ik maak daar gewoon een map aan en plaats een index.html-bestand, zodat het werkt zonder iets in de configuratie te veranderen.

      Met een symbolische link zorg je ervoor dat wijzigingen in de -map automatisch ook zichtbaar zijn in de www-map. Dit is een efficiënte manier om redundantie te voorkomen en bestanden gesynchroniseerd te houden.


      Voordelen van deze aanpak
      Geen configuratiewijzigingen nodig: Je hoeft geen risico's te nemen door wijzigingen aan de VirtualHost of andere configuraties aan te brengen.
      Snel en effectief: Deze oplossing werkt direct zolang je de juiste bestanden op de juiste locatie plaatst.


      ln -s /home/admin/static/be_/subdomains//index.html /home/admin/static/be_/subdomains/www/index.html
      root@Ubuntu-1604-xenial-64-minimal ~ # ls -l /home/admin/static/be_/subdomains/www
      total 4
      lrwxrwxrwx 1 root root 61 Dec 28 22:27 index.html -> /home/admin/static/be_/subdomains//index.html
      lrwxrwxrwx 1 root root 50 Dec 28 22:25  -> /home/admin/static/be_/subdomains/



    Comments