温馨提示×

lnmp如何设置301

小樊
36
2026-08-21 11:58:56
栏目: 编程语言

LNMP(Linux + Nginx + MySQL + PHP) 环境下设置 301 重定向,通常是在 Nginx 配置文件 里完成。下面按常见场景给你详细说明。


一、LNMP 中 301 重定向的核心位置

LNMP 的 Nginx 配置一般在:

/usr/local/nginx/conf/

站点配置文件通常在:

/usr/local/nginx/conf/vhost/你的域名.conf

(LNMP 一键包默认结构)


二、常见 301 重定向场景

1️⃣ 不带 www 301 跳转到带 www

推荐做法

server {
    listen 80;
    server_name example.com;
    return 301 https://www.example.com$request_uri;
}

server {
    listen 80;
    server_name www.example.com;
    # 正常站点配置
}

2️⃣ 带 www 301 跳转到不带 www

server {
    listen 80;
    server_name www.example.com;
    return 301 https://example.com$request_uri;
}

3️⃣ HTTP 301 跳转到 HTTPS(最常见)

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

4️⃣ 整个站点 301 跳转到新域名

server {
    listen 80;
    server_name old.com www.old.com;
    return 301 https://new.com$request_uri;
}

5️⃣ 单个页面 301 重定向

location = /old.html {
    return 301 /new.html;
}

三、HTTPS 站点的 301 写法(完整示例)

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://www.example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com;
    ssl_certificate /path/fullchain.pem;
    ssl_certificate_key /path/privkey.pem;
    return 301 https://www.example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name www.example.com;
    ssl_certificate /path/fullchain.pem;
    ssl_certificate_key /path/privkey.pem;

    root /home/wwwroot/example.com;
    index index.php index.html;
}

四、修改配置后必须执行

nginx -t        # 检查配置
lnmp nginx reload

或:

systemctl reload nginx

五、注意事项(很重要)

301 是永久重定向,浏览器会缓存
不要多个 return 301 形成死循环
✅ 使用 return 301rewrite 性能更好
✅ 调试时可用 curl -I http://域名 查看状态码


六、如何验证是否成功

curl -I http://example.com

应看到:

HTTP/1.1 301 Moved Permanently
Location: https://www.example.com/

如果你愿意,可以把 你的 LNMP 版本 + 域名结构 + 想实现的跳转规则 发给我,我可以帮你直接写一份完整的 vhost 配置。

0