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

为什么我需要404到laravel 5.7的公共子文件夹?,laravel,http-status-code-404,laravel-5.7,subdirectory,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/com

我有一个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 eror,即使它存在

有什么原因吗

这是默认的
.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>

选项-多视图-索引
重新启动发动机
#句柄授权头
RewriteCond%{HTTP:Authorization}。
重写规则。*-[E=HTTP\U授权:%{HTTP:AUTHORIZATION}]
#如果不是文件夹,则重定向尾部斜杠。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_URI}(+)/$
重写规则^1[L,R=301]
#处理前控制器。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]
我刚才注意到,公用文件夹的第一级子目录在尝试列出该目录时出现403(禁止)错误。 例如:

  • localhost/js=>403,禁止
  • localhost/js/dashboard/intro-inde.js=>404,未找到
  • localhost/js/script.js=>200,工作正常
上述示例中存在每个文件和目录,权限没有问题。
我的猜测是它与.htaccess有关,但我不知道它是如何工作的>/p>您应该首先在routes/web.php文件中定义该路由。

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

我记得我在以前使用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>

选项-多视图
重新启动发动机
#如果不是文件夹,则重定向尾部斜杠。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_URI}(+)/$
重写规则^1[L,R=301]
#处理前控制器。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]
#句柄授权头
RewriteCond%{HTTP:Authorization}。
重写规则。*-[E=HTTP\U授权:%{HTTP:AUTHORIZATION}]
这一个解决了问题…没有新的路线我仍然不知道它是如何工作的,为什么


出于好奇,也许有人会告诉我d=(^ ^^)=b

有许多不同级别的子目录。我觉得应该有一个更好的方法,而不是为所有这些写一条路线……或者我错过了什么Dif如果它们作为文件存在,则不需要为它们定义路由检查目录/文件的所有者和权限我正在本地主机(wamp,windows)上运行此操作。我忘了提到这一点。这不是htaccess,我有相同的htaccess文件,我没有在公共子文件夹中得到404