我得到了Laravel的4.2宅基地服务器(nginx)。 所以,如果我在任何视图中写这样的东西:
<script src="media/js/application.js"></script>
<link rel="icon" href="media/img/branding/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="media/css/markdown.css">
它包含所有文件,但下面的代码不起作用( 403错误):
<div style="background-image: url(media/img/image.jpg)"></div>
另外,如果我尝试直接访问/ public中的某个文件夹/文件,它也会返回403。为什么?那是我的nginx网站配置(事实是这是一个自动生成的宅基地配置):
vagrant@homestead:~/work/Timetable$ cat /etc/nginx/sites-enabled/timetable.dev
server {
listen 80;
listen 443 ssl;
server_name timetable.dev;
root "/home/vagrant/work/Timetable/public";
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/timetable.dev-error.log error;
sendfile off;
client_max_body_size 100m;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}
location ~ /\.ht {
deny all;
}
ssl_certificate /etc/nginx/ssl/timetable.dev.crt;
ssl_certificate_key /etc/nginx/ssl/timetable.dev.key;
}
答案 0 :(得分:0)
你提出了两个问题,第一个问题:
您的媒体文件夹应位于资源文件夹下,然后包含它:
asset('media/img/image.jpg');
对于第二个问题,它已存在于此网站上:Laravel Homestead: 403 forbidden on nginx
答案 1 :(得分:0)
<div style="background-image: url(/media/img/image.jpg)"></div>
在媒体之前添加额外的/
。
答案 2 :(得分:0)
我不熟悉nginx,但你是否100%确定文件夹权限是他们应该的? 403转换为禁止意味着在您的配置或权限中的某个位置,它禁止访问。
如果您尝试chmod -R 777 public
怎么办?如果你这样做会有用吗?