webman behandelt statische Dateien

webman unterstützt den Zugriff auf statische Dateien, die sich im Verzeichnis public befinden. Zum Beispiel bedeutet der Zugriff auf http://127.0.0.8787/upload/avatar.png tatsächlich den Zugriff auf {Hauptprojektverzeichnis}/public/upload/avatar.png.

Hinweis
Statische Dateien, die mit /app/xx/Dateiname beginnen, greifen tatsächlich auf das public-Verzeichnis des Anwendungs-Plugins zu. Das bedeutet, dass Verzeichnisse unter {Hauptprojektverzeichnis}/public/app/ nicht unterstützt werden.
Weitere Informationen finden Sie in der Anwendungs-Plugin-Dokumentation.

Deaktivierung der Unterstützung für statische Dateien

Wenn keine Unterstützung für statische Dateien benötigt wird, ändern Sie die Option enable in der Datei config/static.php auf false. Nach der Deaktivierung wird jeder Zugriff auf statische Dateien mit 404 beantwortet.

Ändern des Verzeichnisses für statische Dateien

webman verwendet standardmäßig das public-Verzeichnis für statische Dateien. Wenn Sie dies ändern möchten, können Sie die Hilfsfunktion public_path() in der Datei support/helpers.php anpassen.

Statische Datei-Middleware

webman beinhaltet eine statische Datei-Middleware, die sich im Verzeichnis app/middleware/StaticFile.php befindet. Manchmal müssen wir einige Verarbeitungen an statischen Dateien vornehmen, zum Beispiel das Hinzufügen von CORS-HTTP-Headern oder das Verhindern des Zugriffs auf Dateien, die mit einem Punkt (.) beginnen. Diese Middleware kann dafür verwendet werden.

Der Inhalt von app/middleware/StaticFile.php sieht in etwa wie folgt aus:

<?php
namespace support\middleware;

use Webman\MiddlewareInterface;
use Webman\Http\Response;
use Webman\Http\Request;

class StaticFile implements MiddlewareInterface
{
    public function process(Request $request, callable $next) : Response
    {
        // Verhindere den Zugriff auf versteckte Dateien, die mit . beginnen
        if (strpos($request->path(), '/.') !== false) {
            return response('<h1>403 forbidden</h1>', 403);
        }
        /** @var Response $response */
        $response = $next($request);
        // CORS-HTTP-Header hinzufügen
        /*$response->withHeaders([
            'Access-Control-Allow-Origin'      => '*',
            'Access-Control-Allow-Credentials' => 'true',
        ]);*/
        return $response;
    }
}

Wenn Sie diese Middleware benötigen, müssen Sie die Option middleware in config/static.php aktivieren.