用于资源文件(CSS / JS)的Laravel React-router 404

时间:2018-07-06 12:10:21

标签: laravel reactjs react-router

我正在一个项目上使用Laravel(5.6)和React(16.4.1 + react-router),遇到了一个问题,也许你们中的一些人也遇到了类似的问题,所以我想知道我们是否可以得到一些想法。最近,我在这里找到了用于刷新错误(404)的解决方案:How to use React Router with Laravel?,其中的一种灵魂解决方案也解决了/ app / {anything}问题。

现在我的问题是来自/css文件夹中的资源文件(/js/public)。我尝试使用与/ app =>

相同的正则表达式来解决

Route::get( '/{path?}', function() { return view( 'home' ); })->where('path', '^((?!app|api|css|js).)*$');

,但仍无法按预期工作。如我所读,由于Laravel的缓存机制,我们必须将此代码段放入我们包含在应用程序中的所有路由之后,但是既不能使用/ css,也不能使用/public文件夹中的/ js资源文件,但是只能使用{ {1}}和/api路线,以及我在/ {path?}之前添加的所有内容。

有什么解决办法吗?我究竟做错了什么?

感谢您的帮助, 勒菲兹。

1 个答案:

答案 0 :(得分:0)

我认为我已经找到了解决方案,并且我想必须与其他寻求此解决方案的人分享。首先,这是一个错误。在home.blade.php视图中,我错误地链接了我的资源文件,如下所示:<link rel="stylesheet" href="http://mydomain.something/css/styles.css" />,这就是为什么它没有找到路线并与/ {path?//匹配的原因-所以实际上是呈现了主视图而不是返回资源文件。

为此,Laravel为此提供了一个解决方案,只需在/public文件夹中查找您的资产,只需将文件简单链接为:<link rel="stylesheet" type="text/css" href="{{asset('css/styles.css')}}" />,然后为JS(本地)资产提供几乎相同的解决方案:{ {1}}。

要提及的是,您应该像通过Laravel应用程序那样链接外部(来自其他网络),但由于我要的问题而无法使用。

祝你好运。 :)