为什么我要获得404到laravel 5.7公共子文件夹?

问题描述 投票:0回答:3

我有一个Laravel 5.7项目,我似乎无法理解为什么我的公共目录中的子文件夹出现404错误。

目录结构

  • 上市 图标 CSS file.css

工作得很好的路线示例:

  • 本地主机/图像/ image.png
  • 本地主机/ CSS /的main.css

但是,当我尝试更深入地请求第一个子目录的文件时,我得到404.对于exaple:

  • 本地主机/ pugins /普通/ common.min.js

文件位于public / pugins / common / common.min.js

  • 本地主机/图标/天气图标/ CSS /天气icons.min.css

文件位于public / icons / weather-icons / css / weather-icons.min.css

localhost / FOLDER /之后的任何内容都会出现404错误,即使它存在。

知道为什么吗?

这是默认的.htaccess文件:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

我刚刚注意到,在尝试列出该目录时,公用文件夹的第一级子目录会出现403(禁止)错误。例:

  • localhost / js => 403,禁止
  • localhost / js / dashboard / intro-inde.js => 404,未找到
  • localhost / js / script.js => 200,工作正常

上面的示例中存在每个文件和目录,并且权限没有问题。我的猜测是它与.htaccess有关,但我不知道它是如何工作的。>

laravel http-status-code-404 laravel-5.7 subdirectory
3个回答
0
投票

您应该首先在routes / web.php文件中定义该路由。


0
投票

错误404是我们找不到任何页面的时候。这意味着我们必须首先在web.php文件中定义路由,以便查看在blade.php文件中写入的所需内容。如果我们没有在.blade.php扩展名的视图中保存文件,也可能出现此错误


0
投票

我记得在以前使用laravel 5.1~5.5的项目中我没有遇到任何问题。所以我将.htaccess文件从那些项目复制到了这个。现在一切正常,但对于一个文件夹及其子文件夹:public / icons;我通过创建一个新文件夹并将所有内容从“图标”移动到“字体图标”来解决了这个问题

看看新的.htaccess的力量。也许它会帮助别人。

    <IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

这个解决了这个问题...没有新的路线。 :D我仍然不知道它是如何工作的,为什么呢。

只是为了好奇,也许有人会启发我d =(^ _ ^)= b

© www.soinside.com 2019 - 2024. All rights reserved.