Apache: ErrorDocuments mit GET-Parameter

  • Huhu, mangels Unterforum für "Webserver/Apache" hab ich das hier mal in PHP/MySQL gepackt.


    Ich habe momentan eine error.php, die per GET-Parameter den eigentliche Error-Code (401, 404, etc) bekommt.


    Mein Ziel:


    Code
    ErrorDocument 404 /var/www/internal/error.php?errorCode=404
    ... etc


    Leider versucht Apache jetzt natürlich die Datei "error.php?errorCode=404" zu finden, anstatt "error.php".


    Als Alternative habe ich folgendes probiert:


    Code
    ErrorDocument 404 https://meinedomain.com/error.php?errorCode=404

    Das Problem dabei ist, dass Apache dann weiterleitet, und dann die "error.php"-URL im Browser sichtbar ist, anstatt der originalen URL.


    Hat jemand irgendeine Idee, wie ich Apache dazu bewegen kann, alle ErrorDocuments auf die gleiche Datei umzuleiten, und gleichzeitig einen GET-Parameter oder Env-Variable zu übergeben?


    Apache Version ist /2.4.56.


    LG :)

    Meine Minecraft-Plugins auf SpigotMC (Open Source): www.spigotmc.org/members/mfnalex.175238/#resources

    Discord: discord.jeff-media.com

  • Wie immer hab ich, 10 Minuten nachdem ich hier gepostet habe, selber eine, wenn auch nur halbwegs zufriedenstellende Lösung gefunden :D


    Meine Apache config sieht jetzt so aus - ich benutze einfach einen global Alias (für alle Domains) für die error.php:


    Code
    Alias /meine-domain-error.php /var/www/internal/meine-domain-error.php
    ErrorDocument 400 /meine-domain-error.php?errorCode=400
    ErrorDocument 402 /meine-domain-error.php?errorCode=402
    ErrorDocument 403 /meine-domain-error.php?errorCode=403
    ErrorDocument 404 /meine-domain-error.php?errorCode=404
    ...


    Die Config hab ich durch ein einfaches Bash-Script generiert:

    Bash
    #!/bin/bash
    echo Alias /meine-domain-error.php /var/www/internal/meine-domain-error.php > /etc/apache2/conf-available/errordocs.conf
    
    for errorcode in 400 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 421 422 423 424 426 428 429 431 451 500 501 502 503 504 505 506 507 508 510 511; do
            echo ErrorDocument $errorcode /meine-domain-error.php?errorCode=$errorcode >> /etc/apache2/conf-available/errordocs.conf
    done


    Unschön, funktioniert aber :D


    Weiß jemand ob es eventuell auch möglich ist, das zu erreichen, ohne die HTTP-Codes alle manuell aufzulisten?

    Meine Minecraft-Plugins auf SpigotMC (Open Source): www.spigotmc.org/members/mfnalex.175238/#resources

    Discord: discord.jeff-media.com

    Einmal editiert, zuletzt von mfnalex ()

  • Ok, ich habe jetzt ein weiteres Problem. Ich möchte 403 für einzelne Subdomains nutzen, wenn die außerhalb des VPN aufgerufen werden.


    Apache will also die intern.meinedomain.com/error.php?errorCode=403 ausliefern, aber die ist ja ebenfalls verboten. Ich habe versucht in der errordocs.conf das Verzeichnis mit der error.php zu erlauben, aber das klappt leider immer noch nicht:


    Code: errordocs.conf
    <Directory /var/www/internal/public/>
     Allow from all
    </Directory>
    
    Alias /meine-domain-error.php /var/www/internal/public/meine-domain-error.php
    ErrorDocument 403 /meine-domain-error.php?errorCode=403
    ...

    Der vHost für intern.meinedomain.com sieht folgendermaßen aus:


    Code: intern.meinedomain.com.conf
    <VirtualHost *:443>
            ServerName intern.meinedomain.com
    
            ...
            <Location />
                Include /etc/apache2/conf.d/basic-auth.conf
            </Location>
    
    </VirtualHost>

    Die "basic-auth.conf" listet lediglich die erlaubten IPs auf:


    Code: basic-auth.conf
    <RequireAny>
    Require ip 168.119.121.25
    Require ip 2a01:4f8:c0c:e5d9::/64
    Require ip 10.0.0
    Require ip fc00::/64
    </RequireAny>


    Rufe ich jetzt die Domain außerhalb meines VPNs auf, zeigt Apache mir nur einen 403 für den 403 an :D


    pasted-from-clipboard.png

    Jemand eine Idee wie ich das verhindern kann?

    Meine Minecraft-Plugins auf SpigotMC (Open Source): www.spigotmc.org/members/mfnalex.175238/#resources

    Discord: discord.jeff-media.com