Statik Dosyaların İşlenmesi
webman, statik dosya erişimini destekler. Statik dosyalar genellikle public
dizini altına yerleştirilir, örneğin http://127.0.0.8787/upload/avatar.png
adresine yapılan istek aslında {ana_proje_dizini}/public/upload/avatar.png
'e erişim sağlar.
Not
webman 1.4 sürümünden itibaren uygulama eklentilerini desteklemektedir./app/xx/dosya_adı
ile başlayan statik dosya erişimi aslında uygulama eklentisininpublic
dizinine erişim sağlar. Başka bir deyişle, webman >=1.4.0 sürümü,{ana_proje_dizini}/public/app/
altındaki dizinlere erişim sağlamamaktadır.
Daha fazlası için Uygulama Eklentileri'ne bakınız.
Statik Dosya Desteğini Kapatma
Eğer statik dosya desteğine ihtiyaç duymuyorsanız, config/static.php
dosyasını açarak enable
seçeneğini false
olarak değiştirin. Kapatıldığında tüm statik dosya erişimi 404 hatası döndürecektir.
Statik Dosya Dizini Değiştirme
webman, varsayılan olarak statik dosyalar için public dizinini kullanır. Değiştirmek istiyorsanız, support/helpers.php
dosyasındaki public_path()
yardımcı işlevini değiştirmeniz gerekmektedir.
Statik Dosya Ara Yazılımı
webman'in kendi içinde bir statik dosya ara yazılımı vardır, konumu app/middleware/StaticFile.php
.
Bazen statik dosyalar üzerinde bazı işlemler yapmamız gerekebilir, örneğin statik dosyalara çapraz kaynak (CORS) başlığı eklemek, nokta (.
) ile başlayan dosyalara erişimi engellemek için bu ara yazılımı kullanabiliriz.
app/middleware/StaticFile.php
dosyası aşağıdaki gibi olabilir:
<?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
{
// Nokta ile başlayan gizli dosyalara erişimi engelle
if (strpos($request->path(), '/.') !== false) {
return response('<h1>403 forbidden</h1>', 403);
}
/** @var Response $response */
$response = $next($request);
// Çapraz kaynak (CORS) başlığı ekle
/*$response->withHeaders([
'Access-Control-Allow-Origin' => '*',
'Access-Control-Allow-Credentials' => 'true',
]);*/
return $response;
}
}
Bu ara yazılımı gerektiğinde config/static.php
dosyasındaki middleware
seçeneğini etkinleştirmeniz gerekmektedir.