Почему я получаю открытые подпапки 404 to laravel 5.7? - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть проект Laravel 5.7, и я не могу понять, почему я получаю 404 ошибку во вложенных папках в общедоступном каталоге.

Структура каталога

  • public
    • icons
      • 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 file:

<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 голосов
/ 18 февраля 2019

Ошибка 404 - это когда мы не находим никаких страниц.Это означает, что мы должны сначала определить маршрут в нашем файле web.php, чтобы просмотреть желаемое содержимое, записанное в файле blade.php. Эта ошибка также может появиться, если мы не сохранили файл в наших представлениях в расширении .blade.php

0 голосов
/ 19 февраля 2019

Я вспомнил, что у меня не было проблем в предыдущих проектах, использующих 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

0 голосов
/ 18 февраля 2019

Сначала вы должны определить этот маршрут в файле route / web.php.

...