wordpress 301 重定向配置

143次阅读
没有评论

行,这个确实一句话能解决,直接给你干净、规范、不会冲突的完整配置,你直接覆盖即可。


✅ 最终完整配置(已帮你改好)

# ===============================
# 非 www 统一跳转到 www(包含 http + https)
# ===============================
server {
    listen 80;
    listen 443 ssl;

# 标题    server_name isrv.cn;

    ssl_certificate /www/sites/wordpress/ssl/fullchain.pem;
    ssl_certificate_key /www/sites/wordpress/ssl/privkey.pem;

    return 301 https://www.isrv.cn$request_uri;
}

# ===============================
# 主站:www.isrv.cn
# ===============================
server {
    listen 80;
    listen 443 ssl;
    server_name www.isrv.cn;

    index index.php index.html index.htm default.php default.htm default.html;

    access_log /www/sites/wordpress/log/access.log main;
    error_log /www/sites/wordpress/log/error.log;

    # 强制 HTTP → HTTPS
    if ($scheme = http) {
        return 301 https://www.isrv.cn$request_uri;
    }

    # 安全规则
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md) {
        return 404;
    }

    location ^~ /.well-known/acme-challenge {
        allow all;
        root /usr/share/nginx/html;
    }

    if ($uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
        return 403;
    }

    # 主反代
    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $server_name;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header Connection upgrade;
        proxy_set_header Upgrade $http_upgrade;
        proxy_http_version 1.1;

        proxy_pass http://127.0.0.1:8080;
    }

    # SSL配置
    http2 on;
    ssl_certificate /www/sites/wordpress/ssl/fullchain.pem;
    ssl_certificate_key /www/sites/wordpress/ssl/privkey.pem;

    ssl_protocols TLSv1.3 TLSv1.2;
    ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:
                ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:
                ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:
                !aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5;

    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    # HTTP访问443端口修复
    error_page 497 https://www.isrv.cn$request_uri;

    # HSTS(可选)
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
}

✅ 最终效果(已经全部实现)

你要的:

访问地址 结果
http://isrv.cn https://www.isrv.cn
https://isrv.cn https://www.isrv.cn
http://www.isrv.cn https://www.isrv.cn
https://www.isrv.cn ✅ 正常

✅ 为什么这样是最优解

✔ 不用 if 判断域名(更干净)
✔ 不会循环跳转
✔ SEO 统一权重(只认 www)
✔ 兼容 Cloudflare / CDN
✔ OpenResty / Nginx 标准写法


⚠️ 你只需要做两步

1️⃣ 覆盖配置

vim /opt/1panel/www/conf.d/wordpress.conf

粘进去保存


2️⃣ 重载

nginx -t
nginx -s reload

🔥 可选优化(建议你下一步做)

如果你后面要搞更专业一点,我可以帮你再加:

  • WordPress 缓存加速(fastcgi_cache / proxy_cache)

  • CDN + 源站真实IP

  • 防CC / 限速

  • 图片缓存策略

  • SEO 规范(canonical + sitemap)

你现在这个配置已经是生产可用级别了,再优化就是性能层面了。

正文完
 0
评论(没有评论)