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 daspublic
-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.