Общедоступная папка Laravel запрещена - PullRequest
0 голосов
/ 07 сентября 2018

Недавно я добавил CSS-фреймворк в мой проект Laravel, который работал нормально, пока я не перешел на использование набора значков, который можно найти в виде файла шрифта в глубоко вложенной папке.

Я настроил Laravel Mix, чтобы скопировать каталог папки frameworks в мою общедоступную версию следующим образом: .copyDirectory('node_modules/semantic-ui-css/themes', 'public/css/themes')

Чтобы быть совершенно понятным, файлы и их папки копируются идеально, и URL, похоже, отлично совпадают. Кажется, что все папки и файлы имеют правильное право владения и разрешения, те же, что используются в других местах на сайте.

При переходе к <domain>/css/themes/default/assets/fonts/icons.woff2 я получаю 403 с текстом «Доступ запрещен», это также происходит, если я создаю свою собственную папку в /public/css и добавляю в нее файл, все глубже, чем /css, просто 403.

На данный момент я вполне уверен, что проблема в конфигурации Nginx (частично показанной ниже) или в некоторой конфигурации самого Laravel, которую я пропустил.

location / {
    try_files $uri $uri/ /index.php?$query_string;
    fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

В этот раз я озадачен, и, поиграв с ним и погуглив, чтобы найти похожие проблемы, я не добился прогресса. Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Разделение локации nginx в двух разных локациях. Это позволит nginx отдельно обслуживать ресурсы и файлы php:

server {
    listen 80;
    server_name _;

    index index.php;
    root  /path/to/your/public/directory;

    rewrite ^(.+)/$ $1 permanent; # removing trailing slashes

    # Location for all files, including assets
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    # Location for php files
    location ~ \.php$ {
        include         fastcgi_params;
        fastcgi_pass    unix:/var/run/php/php7.2-fpm.sock;
        fastcgi_index   index.php;
        fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    }
}
0 голосов
/ 07 сентября 2018

Ваш файл .htaccess должен быть таким Опции -MultiViews

RewriteEngine On

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$public /$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}]

и путь вашего css-файла как обычно, например

<link href="{{ url('/') }}/css/custom.css" rel="stylesheet" type="text/css" /> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...