配置nginx 解决404 not found问题

本文介绍了一位开发者在部署ThinkPHP框架的棋牌游戏项目到服务器时遇到的404错误问题及其解决方案。通过调整Nginx配置,使得服务器能够正确解析ThinkPHP项目的路由请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

公司最近让我安装配置一个叫大番薯H5的棋牌类游戏,代码使用thinkphp的框架开发的。TP框架有好几年没用过了,忘了都差不多了。代码也和人一样,过一段时间你不去见她,也就忘记的差不多了。

期间没有碰到太大的问题,安装配置程序的环境都很顺利,唯独将代码部署上服务器之后,总是报404错误。看了下nginx支持PHP的配置没问题,单独创建一个PHPINFO文件是可以访问的,后来一看连接发现问题所在。


由于没有配置nginx会查找名为admin.php/login/index.html的文件,这当然找不到,所以得在nginx.conf中配置

在配置文件中加上这段配置信息


 location ~ \.php/ {
               if ($request_uri ~ ^(.+\.php)(/.+?)($|\?)) { }
                fastcgi_pass 127.0.0.1:9000;
                include fastcgi_params;
                fastcgi_param SCRIPT_NAME     $1;
                fastcgi_param PATH_INFO       $2;
                fastcgi_param SCRIPT_FILENAME $document_root$1;
   }

重启nginx,程序运行成功。


### 解析 Nginx 404 Not Found 错误 当服务器返回 `404 Not Found` 错误时,意味着客户端尝试访问的资源在服务器上不存在。对于Nginx而言,这通常是因为请求路径未能匹配任何实际存在的文件或未被正确转发给应用程序处理。 #### 文件位置不正确 如果直接访问域名如 app.test.cc,则请求会被导向至 `/home/app/login/jboss/webapps` 下查找默认首页文件(例如 index.jsp, index.htm 或者 index.html)。一旦这些指定的入口文件缺失于该目录内,便会触发404响应[^1]。 #### 路由配置不当 针对基于PHP框架的应用程序(比如Laravel),即使根路径可以成功加载,其他自定义路由可能会因为缺少必要的重写规则而遭遇404错误。特别是当试图隐藏index.php时,如果没有适当调整location块中的try_files指令来支持干净URL模式的话,就容易发生此类情况[^3]。 #### 配置文件语法错误 另外,在修改Nginx配置过程中引入了非法字符或是遗漏某些必要符号也会造成服务端解析失败并给出类似的提示信息。因此建议使用专业的文本编辑工具而非简单的记事本来编辑.conf文件以减少潜在的风险因素[^4]。 为了有效解决上述提到的各种原因引起的404问题: ```nginx server { listen 80; server_name localhost; root /path/to/your/project/public; # 确认此路径指向项目public目录 location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.x-fpm.sock; # 根据实际情况替换版本号 } } ``` 这段代码展示了如何通过设置正确的root路径以及利用try_files命令让所有未知URI最终都交由index.php处理的方式,从而避免因找不到具体文件而导致的404错误。同时确保fastcgi部分能够顺利传递PHP请求给后端解释器执行。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值