51 lines
1.3 KiB
PHP
51 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Middleware;
|
|
|
|
use Closure;
|
|
use Illuminate\Http\Request;
|
|
use Symfony\Component\HttpFoundation\Response;
|
|
|
|
class EnsureSlashAtEnd
|
|
{
|
|
/**
|
|
* Handle an incoming request.
|
|
*
|
|
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
|
|
*/
|
|
public function handle(Request $request, Closure $next): Response
|
|
{
|
|
if ($request->ajax()) {
|
|
return $next($request);
|
|
}
|
|
|
|
$path = $request->path();
|
|
$query = $request->getQueryString();
|
|
|
|
if ($path !== '' && !str_ends_with($request->getRequestUri(), '/')) {
|
|
$newUrl = $request->getSchemeAndHttpHost().'/'.$path.'/';
|
|
|
|
if ($query) {
|
|
$newUrl .= '?'.$query;
|
|
}
|
|
dd(redirect()->to('/'.$newUrl, 301) ,$newUrl );
|
|
return redirect()->to('/'.$newUrl, 301);
|
|
}
|
|
|
|
return $next($request);
|
|
}
|
|
|
|
protected function isLivewireRequest(Request $request): bool
|
|
{
|
|
return str_starts_with($request->path(), 'livewire/') ||
|
|
$request->hasHeader('X-Livewire');
|
|
}
|
|
|
|
protected function isStaticFile(Request $request): bool
|
|
{
|
|
$path = $request->getPathInfo();
|
|
|
|
return preg_match('/\.(css|js|jpg|jpeg|png|gif|ico|svg|woff|woff2|ttf|eot)$/', $path);
|
|
}
|
|
}
|