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

Nginx配置Certbot SSL后www转非www时部分页面提示URL未找到问题

我来帮你搞定这个问题!你遇到的核心问题是没有针对www.desijewel.in的HTTPS请求配置对应的处理规则,导致带路径的HTTPS请求到www域名时,Nginx找不到匹配的server块,直接返回404。下面是具体的修复方案:

第一步:确保SSL证书包含www域名

如果之前只给主域名desijewel.in申请了证书,先运行以下命令更新证书,让它同时覆盖www.desijewel.in:

certbot --nginx -d desijewel.in -d www.desijewel.in

这个命令会自动生成包含两个域名的SSL证书,同时帮你更新基础的Nginx配置,之后我们再手动调整重定向逻辑。

第二步:替换为正确的Nginx配置

把你的Nginx配置替换成以下内容,每个部分都做了针对性处理:

# 主域名HTTPS处理:负责响应所有https://desijewel.in的请求(含路径)
server {
    root /home/anjaan/dsjwl/backend/public;
    gzip on;
    gzip_types text/plain application/xml text/css application/javascript;
    gzip_min_length 1000;
    index index.php index.html index.htm index.nginx-debian.html;
    server_name desijewel.in;

    # 保留你原来的其他配置(比如PHP解析规则、路由规则等)

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/desijewel.in/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/desijewel.in/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

# www域名HTTPS重定向:专门处理所有https://www.desijewel.in的请求(含路径)
server {
    server_name www.desijewel.in;

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/desijewel.in/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/desijewel.in/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    # 核心:重定向时带上$request_uri,完整保留原请求的路径参数
    return 301 https://desijewel.in$request_uri;
}

# 统一处理HTTP请求:把所有http://的请求(主域名+www)重定向到HTTPS主域名
server {
    listen 80;
    server_name desijewel.in www.desijewel.in;

    return 301 https://desijewel.in$request_uri;
}

关键逻辑说明

  • 第二个server块是解决问题的核心:它专门匹配www.desijewel.in的HTTPS请求,通过$request_uri变量完整保留原路径(比如/article),再重定向到主域名,避免了路径丢失导致的404。
  • 第三个server块简化了HTTP重定向逻辑,不管用户访问的是http://desijewel.in还是http://www.desijewel.in,都会直接跳转到HTTPS主域名,不需要分散配置。

最后一步:验证配置并重启Nginx

修改完配置后,先检查语法是否正确:

nginx -t

如果输出test is successful,就可以重启Nginx生效:

systemctl restart nginx

现在再访问https://www.desijewel.in/article,就会正确跳转到https://desijewel.in/article,不会再出现404错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 11:58:14