php - 如何在 Laravel 路由中返回一个 .xml 文件

标签 php laravel laravel-5 sitemap

<分区>

我已经生成了站点地图 .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/xmltext/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/

相关文章:

php - Laravel 查询运行两次

php - 使用 PHPMailer 发送电子邮件 - 在正文中嵌入图像

php - "require_once(): Failed opening required"但文件存在并且可读

php - Laravel 媒体存储最佳实践

php - Laravel:更新 hasMany/BelongsTo 关系

php - 如何使用 zend from 在 zend Framework 2 中添加自定义属性

orm - Laravel 4 : Eager loading

ajax - 如何在 Laravel 中读取 FormData 对象

ajax - Laravel:Ajax 发布请求路由

laravel - Laravel 排队事件监听器与作业之间的区别