为什么我会得到一个404 laravel 5.7公共子文件夹?

时间:2019-02-18 11:37:00

标签: laravel http-status-code-404 laravel-5.7 subdirectory

我有一个Laravel 5.7项目,但我似乎不明白为什么我在公共目录的子文件夹中出现 404错误

目录结构

  • 公共
    • 图标
      • css
        • file.css

可以正常工作的路线示例:

  • localhost / images / image.png
  • localhost / css / main.css

但是,当我尝试请求比第一个子目录更深的文件时,我得到了404。例如:

  • localhost / pugins / common / common.min.js

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

  • localhost / icons / weather-icons / css / weather-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有关,但我不知道它如何工作>。>

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

错误404是当我们找不到任何页面时。这意味着我们必须首先在web.php文件中定义路由,以便查看写入blade.php文件中的所需内容。如果我们没有将文件保存在.blade.php扩展名< / p>

答案 2 :(得分: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

相关问题