Stefan: Apache-Webserver rät Dateinamen

Hallo,

wenn ich example.org/mail/123213123.jpg aufrufe, wird mir der Inhalt von example.org/mail.php angezeigt. Wie kann ich das Verhalten beim Apache abschalten? Er soll wirklich den Inhalt anzeigen, der unter der gewünschten Adresse vorhanden ist (oder eben nicht, dann 404).

Danke und Viele Grüße

  1. Tach!

    wenn ich example.org/mail/123213123.jpg aufrufe, wird mir der Inhalt von example.org/mail.php angezeigt. Wie kann ich das Verhalten beim Apache abschalten?

    Erstmal ermitteln, welches Verhalten wirklich vorliegt. Es kann sich der Beschreibung nach um ein aktives mod_speling handeln. Auch mod_mime mit den Feature MultiViews rät gern herum, aber das wird bei dir nicht der Fall sein.

    Wenn es das nicht ist, und keiner einen anderen Verdacht hat, musst du mal die Apache-Konfiguration nach verdächtigen Konfigurationen durchschauen (falls du dazu administrativ-rechtlich in der Lage bist).

    dedlfix.

  2. wenn ich example.org/mail/123213123.jpg aufrufe, wird mir der Inhalt von example.org/mail.php angezeigt. Wie kann ich das Verhalten beim Apache abschalten? Er soll wirklich den Inhalt anzeigen, der unter der gewünschten Adresse vorhanden ist (oder eben nicht, dann 404).

    Options -MultiViews
    

    war es, habe irgendwie ständig die falschen Suchbegriffe verwendet.

    1. wenn ich example.org/mail/123213123.jpg aufrufe, wird mir der Inhalt von example.org/mail.php angezeigt.

      Options -MultiViews war es

      Nein, nicht ganz. Multiviews sucht zwar bei "/test" nach zur Anfrage passenden Dateien im Verzeichnis /, aber bei dir spielt die Pathinfo-Funktion mit rein.

      Hast du ein Skript unter /skript liegen, werden sämtliche Pfade unterhalb von /skript in einer Variablen namens PATH_INFO an das Skript übergeben. Bei deinem Aufruf von /mail/123213123.jpg wird also mail.php ausgeführt ("mail" -> mail.php wegen Multiviews) und diesem "123213123.jpg" in der Variablen $_SERVER["PATH_INFO"] übergeben. Das Ganze funktioniert mit beliebig langen bzw. tief verschachtelten Pfaden.

      Die Funktion gehört zum Webserver und ist dementsprechend nicht auf PHP beschränkt. Wie genau PATH_INFO im Skript erscheint, hängt von der verwendeten Sprache ab; die CGI-Schnittstelle setzt zum Beispiel eine einfache Umgebungsvariable für den CGI-Prozess.

      Beschreibung findest du unter https://httpd.apache.org/docs/2.4/mod/core.html#acceptpathinfo