<分区>
我已经生成了站点地图 .xml 文件并想返回。我将文件放在我的 views 文件夹中并制作了这条路线:
Route::get('/site-map', function(){
return view('sitemap.xml');
});
虽然我只是无法让它显示。
<分区>
我已经生成了站点地图 .xml 文件并想返回。我将文件放在我的 views 文件夹中并制作了这条路线:
Route::get('/site-map', function(){
return view('sitemap.xml');
});
虽然我只是无法让它显示。
最佳答案
默认情况下,Laravel 不支持加载 .xml
文件作为 View 。话虽如此,您的问题有几种解决方案:
最简单的方法是将您的 sitemap.xml
放在 /public
目录中。浏览器将能够在 http://yourdomain.com/sitemap.xml
看到该文件。
您可以加载文件的内容并返回响应,将 Content-Type
header 设置为 application/xml
或 text/xml
告诉浏览器您提供的文件实际上是一个 XML 文档。
return response(file_get_contents(resource_path('sitemap.xml')), 200, [
'Content-Type' => 'application/xml'
]);
或者,您可以通过在服务提供者中执行类似的操作来告诉 Laravel 的 View 查找器支持 .xml
扩展(例如您的 AppServiceProvider
,位于 app/Providers/AppServiceProvider.php
):
app('view.finder')->addExtension('xml');
完成后,Laravel 应该将 .xml
识别为有效的 View 扩展并加载您的 XML 文件,就好像它是一个 View 一样。这有一个额外的好处,就是能够将数据传递给它并在你的 View 中使用 Blade/PHP,如果你想:
return view('sitemap');
关于php - 如何在 Laravel 路由中返回一个 .xml 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50767373/