You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx配置404删除页跳转首页部分链接不生效求助

问题原因

你当前配置无法覆盖.php后缀页面跳转的核心原因有2个:

  • 你把error_page 404规则写在了location /块内部,而站点一般都会单独配置匹配.php后缀的location块用来解析PHP请求,你给出的两个失效链接都是.php结尾,请求会优先匹配PHP解析的location块,不会继承location /里的错误页规则,自然无法触发跳转。
  • 你当前的error_page写法没有指定跳转状态码,就算触发规则,也是在原URL下返回首页内容,不会实现地址栏跳转到首页的效果,且对SEO不友好。
修正方案
  1. 将404处理规则移动到server块层级,让所有location块(包括PHP解析块)都能全局继承该规则
  2. 如果你需要实现地址栏跳转,给error_page指定301(永久跳转)/302(临时跳转)状态码;如果希望保留原URL、返回404状态码同时展示首页内容(更符合搜索引擎规范,避免被判定为作弊),直接指向首页文件路径即可
  3. 确认PHP解析的location块内没有单独配置error_page规则覆盖全局配置
修正后参考配置
server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;

    server_name _;

    # 方案1:301永久跳转到HTTPS首页(地址栏会变更为首页地址,匹配你原本的需求)
    error_page 404 =301 https://nitmeghalaya.in/;
    # 方案2:保留URL返回404状态码,展示首页内容(SEO更友好,可按需替换)
    # error_page 404 /index.php;

    location / {
        try_files $uri $uri/ =404;
    }

    # 原有PHP解析配置(你之前贴的配置漏了这段,这是.php链接不跳转的核心原因)
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        # 替换为你服务器实际的php-fpm监听地址,常见为php7.4-fpm.sock、php8.0-fpm.sock等
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        # 不要在此处单独定义error_page,避免覆盖全局规则
    }
}
生效操作

配置修改完成后依次执行以下命令:

  • 执行nginx -t检查配置语法是否正确,避免配置错误导致Nginx无法启动
  • 语法校验通过后执行systemctl reload nginx重载配置即可生效

内容的提问来源于stack exchange,提问作者Go Daddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 18:06:26