Я пытаюсь добавить файл sitemap.xml для веб-сайта laravel. Я использую laravel версии 9. Я пытался искать в Google и YouTube, но не смог найти решения.
Я создал файл sitemap.xml и переместил файл sitemap.xml в общедоступный каталог, а также добавил маршрут в папку/каталог маршрутов, подобный этому, в файл web.php, где определены другие маршруты:
Route::get("sitemap.xml" , function () {
return \Illuminate\Support\Facades\Redirect::to('sitemap.xml');
});
Я также попытался добавить следующий код в папку/каталог маршрутов следующим образом:
Route::get('sitemap.xml',function() {
return response()->view('sitemap')
->header('Content-Type', 'xml');
});
Теперь открываем файл xml через url: https://www.example.com/sitemap.xml, у меня получается 500 ОШИБКА СЕРВЕРА.






Вы не можете ссылаться на файл с вызовом метода просмотра. Поместите файл в папку хранилища, а затем используйте вызов файла для фактического обслуживания файла.
return response()->file('sitemap.xml');
Если вы хотите динамически генерировать свою карту сайта и обрабатывать ее из представления блейда, вы можете сделать это следующим образом:
Route::get('sitemap.xml', [SiteMapController::class, 'sitemap'])->name('sitemap');
Затем в SitemapController выполните динамические действия и верните представление блейда:
$models = Model::all();
return response()->view('sitemap', compact('models'))->header('Content-Type', 'text/xml');
И sitemap.blade.php в папке представлений:
<?php echo '<?xml version = "1.0" encoding = "UTF-8"?>'; ?>
<urlset xmlns = "http://www.sitemaps.org/schemas/sitemap/0.9">
@foreach ($models as $model)
<url>
<loc>{{ route('models.show', $model) }}</loc>
</url>
@endforeach
</urlset>
Я бы сразу поместил файл в папку
publicи все... не нужно создавать маршрут или что-то еще сумасшедшее...