解决nginx配置导致的PHP网站跳转404错误的问题方法

最近我将我的 PHP 网站部署在 NGINX 服务器上时,点击网站上的一些链接或者按钮的时候,页面跳转到比如 /signin 或 /signup 的 URL 时出现404 Not Found 错误的情况。
进过一系列的查资料和群里询问大佬最终解决了问题,现在围绕我解决的这个问题做一个整理复盘,为需要的小伙伴提供参考。
一般点击 URL 时出现404 Not Found 错误的时候,就相当于告诉你 nginx 服务器无法将这类请求准确路由到 PHP 应用程序的入口文件(一般是 index.php)。这种问题的发生的原因多是 nginx 配置有误,所以本文我将为大家提供一种常见且有效的解决方案,通过正确配置 nginx,解决此类问题,保障网站运行正常。
问题分析
出现这种问题的原因是 nginx 配置不正确,导致它直接尝试在文件系统中查找与 URL 对应的文件或目录,而实际上这些 URL 应该由 PHP 应用程序处理。
解决方案
解决这个问题的关键是确保 nginx 配置中包含一个location块,用于将所有未找到的 URI 重定向到 index.php,并传递相应的查询字符串。
修改 Nginx 配置文件
- 找到 nginx 配置文件:通常位于
/etc/nginx/sites-available/目录下,文件名可能与你的域名相关。 - 编辑配置文件:使用文本编辑器打开配置文件,例如
sudo nano /etc/nginx/sites-available/your_domain.com。 - 添加或修改 location 块: 在 server 块中添加以下 location 块:
server { listen 80; listen [::]:80; listen 443 ssl; listen [::]:443 ssl; root /root/var/www/myforum/public; # 确保路径正确 index index.php index.html index.htm index.nginx-debian.html; server_name www.example.com; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { try_files $uri $uri/ =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }配置解释:
location / { ... }:这个块匹配所有请求。try_files $uri $uri/ /index.php?$query_string;:这行代码的作用是:- 首先,尝试查找与请求 URI 匹配的文件 ($uri)。
- 如果文件不存在,尝试查找与请求 URI 匹配的目录 ($uri/)。
- 如果目录也不存在,则将请求重定向到 index.php,并将原始请求的查询字符串 ($query_string) 附加到 URL 上。
- 检查 root 路径: 确保 root 指令指向你的网站的公共目录,也就是包含 index.php 文件的目录。 示例中的配置是
/root/var/www/myforum/public,根据你的实际情况修改。 - 保存配置文件: 保存对配置文件的修改。
- 测试 Nginx 配置: 运行
sudo nginx -t命令来测试配置文件的语法是否正确。 - 重新加载 Nginx: 运行
sudo systemctl reload nginx命令来重新加载 Nginx 配置。
注意事项
- PHP-FPM 版本:确保
fastcgi_pass指令指向正确的 PHP-FPM socket 文件。在本例中是unix:/run/php/php7.4-fpm.sock,如果你的 PHP 版本不同,需要修改为对应的 socket 文件。 - 文件权限:确保 nginx 进程拥有读取网站文件的权限。
- 错误日志:如果问题仍然存在,查看 nginx 的错误日志文件(文件位于
/var/log/nginx/error.log)以获取更多信息。
总结
通过在 nginx 配置中添加或修改 location /块,并运用 try_files 指令,能让 nginx 清楚如何处理找不到对应文件或目录的请求,并将其正确传递给 PHP 应用程序,有效解决 PHP 网站在 nginx 服务器上跳转出现 404 错误的问题。在操作过程中,要仔细检查 nginx 配置文件,保证路径、参数设置无误,留意 PHP-FPM 版本、文件权限等细节。
如果按以上方式处理后问题依然存在,则需要去查看错误日志来获取更多信息,帮助我们找到问题原因,让网站程序稳定运行。
以上关于解决nginx配置导致的PHP网站跳转404错误的问题方法的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 解决nginx配置导致的PHP网站跳转404错误的问题方法
微信
支付宝