首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有资产路由的Laravel单页应用程序

具有资产路由的Laravel单页应用程序
EN

Stack Overflow用户
提问于 2018-12-20 03:37:33
回答 2查看 291关注 0票数 0

我正在开发一个单页应用程序,人们可以在WIXIWIG编辑器中将文件上传到网站,但当您转到资产的公共链接时,您将被定向到由应用程序本身组成的通配符页面,而不是显示资产。

这是我的路线

代码语言:javascript
运行
复制
Route::get('/{any}', 'AppController@index')->where('any', '.*');

有没有一种方法可以将文件存储在本地,而使资产文件和其他类型的文件不转到此路径?

例如,转到像这样的url

代码语言:javascript
运行
复制
/storage/media/38aOL4Pp092SAqNeKIkTuVQ8qRE2RGhfEp2KHSP9.png

不显示此图像,但显示单页面应用程序,它可以很好地加载来自其他网站的图像。

EN

回答 2

Stack Overflow用户

发布于 2018-12-20 04:25:50

Laravel应该已经将真实的、现有的文件优先于它自己的路由。在默认的Apache配置中:

代码语言:javascript
运行
复制
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

或者在nginx中:

代码语言:javascript
运行
复制
location / {
    try_files $uri $uri/ /index.php?$query_string;
}

这两个配置基本上都是说“尝试找到一个真正的文件,只有在什么也找不到的情况下才使用index.php ”。

除非您对这些配置做了一些不可靠的操作,否则这意味着/storage/media/38aOL4Pp092SAqNeKIkTuVQ8qRE2RGhfEp2KHSP9.png不是该文件的正确路径。

重要的是要注意,您的应用程序的storage目录是不可公开访问的(如果您正确配置了这些内容)。请参阅the public disk上的Laravel文档,并确保您有一个从public/storagestorage/app/public的链接,并且storage/app/public/media/38aOL4Pp092SAqNeKIkTuVQ8qRE2RGhfEp2KHSP9.png存在于您的服务器上(并且可由See服务器读取)。

票数 0
EN

Stack Overflow用户

发布于 2018-12-20 04:40:31

在通配符路由之前定义一个带有参数(例如'/files/{fileName}')的路由,并使用该路由返回请求的文件。

然后,将通配符路由(它返回带有单页应用程序的索引视图)放在路由定义的底部。这样,只有当路由与上面定义的任何路由不对应时,您才会返回单页应用程序。

总而言之,它应该看起来像这样:

代码语言:javascript
运行
复制
Route::get('files/{fileName}', function ($fileName) {
    // return the requested file
});

Route::get('/{any}', 'AppController@index')->where('any', '.*');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53858109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档