feifeiaini1 发表于 2021-5-13 12:16:50

lnmp1.7 laravel 伪静态 403

本帖最后由 feifeiaini1 于 2021-5-13 12:18 编辑

server
    {
      listen 80;
      #listen [::]:80;
      server_name www.laravel.me;
      index index.html index.php;
      root/home/wwwroot/www.laravel.me/public;

      # Deny access to PHP files in specific directory
      #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }

      include enable-php.conf;

      include rewrite/laravel.conf;
      #error_page   404   /404.html;

      location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
      {
            expires      30d;
      }

      location ~ .*\.(js|css)?$
      {
            expires      12h;
      }

      location ~ /.well-known {
            allow all;
      }

      location ~ /\.
      {
            deny all;
      }

      access_log/home/wwwlogs/www.laravel.me.log;
    }


伪静态可以正常使用,伪静态路由 www.laravel.me/news如果 /home/wwwroot/www.laravel.me/public这个目录下面 没有news这个目录的时候可以正常。
如果 有 news 这个目录的情况下就会提示 403 Forbidden,一旦路由地址 在 public 下面存在就会出错。

public 下面存在相同文件夹名称时nginx日志
"GET /news/ HTTP/1.1" 403 548 "-" "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Mobile Safari/537.36"
不存在时日志
"GET /news/ HTTP/1.1" 200 549 "http://www.laravel.me/index.php" "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Mobile Safari/537.36"


本地使用的其他环境就没这个情况,服务器使用的是 lnmp1.7 就有这个情况。是不是哪里还需要设置什么?


feifeiaini1 发表于 2021-5-14 10:59:44

licess 发表于 2021-5-14 09:39
这是官网上提供的伪静态,上面写的很明确,先检查是否有news文件,再检查是否有news目录,最后才给larav ...

明白,非常感谢您的回答。
目前在nginx加了一个配置参数,把这个问题解决了。感谢。

licess 发表于 2021-5-13 15:51:25

laravel框架的肯定是要指定网站目录到public目录
你public目录下有news目录肯定就直接访问news目录了,你可以自己去看laravel官网提供的伪静态规则,既然是访问的news目录,目录下没index文件或目录权限有问题肯定就会报403错误代码

feifeiaini1 发表于 2021-5-13 17:21:24

本帖最后由 feifeiaini1 于 2021-5-13 17:24 编辑

licess 发表于 2021-5-13 15:51
laravel框架的肯定是要指定网站目录到public目录
你public目录下有news目录肯定就直接访问news目录了,你可 ...
我配置贴出来了,是指定的public目录,public下放了很多静态文件,目前 public 下面 有一个 news 这个目录,这个目录放了很多js和css文件。 这里是没有错的

当我路由规则定义为 www.laravel.me/news这个时候,意思是 路由规则 news 和 public 下面的 news 冲突了。 就会出现403 这个问题。 相当于是在定义路由规则的时候,就要避开和 public 下面目录名冲突的情况,不然就会403。如果路由定义的路由规则路径名和public下面的文件夹名称没有冲突,就一切正常。

本地使用 phpstudy 没有这个问题。

licess 发表于 2021-5-14 09:39:55

feifeiaini1 发表于 2021-5-13 17:21
我配置贴出来了,是指定的public目录,public下放了很多静态文件,目前 public 下面 有一个 news 这个目 ...

location / {
    try_files $uri $uri/ /index.php?$query_string;
}
这是官网上提供的伪静态,上面写的很明确,先检查是否有news文件,再检查是否有news目录,最后才给laravel
2楼也已经给你说了“既然是访问的news目录,目录下没index文件或目录权限有问题肯定就会报403错误代码”
页: [1]
查看完整版本: lnmp1.7 laravel 伪静态 403