如何用Nginx将子域名的WWW前缀重定向至无WWW子域名
Nginx配置实现子域名WWW重定向并保留主域名WWW
要实现你的需求,核心是通过Nginx的server块和正则匹配区分主域名与子域名的处理逻辑,具体配置如下:
1. 处理带WWW前缀的子域名重定向
添加专门的server块,匹配所有带WWW前缀的子域名,将其永久重定向到对应的无WWW子域名:
server { listen 80; # 匹配所有形如www.xxx.rakyat.news的子域名 server_name ~^www\.(.*)\.rakyat\.news$; # 301永久重定向,$1捕获子域名核心部分(如politik) return 301 http://$1.rakyat.news$request_uri; }
如果网站启用了HTTPS,需同步添加监听443的server块(记得配置对应SSL证书):
server { listen 443 ssl; server_name ~^www\.(.*)\.rakyat\.news$; # 替换为你的SSL证书实际路径 ssl_certificate /path/to/your/cert.pem; ssl_certificate_key /path/to/your/key.pem; return 301 https://$1.rakyat.news$request_uri; }
2. 配置主域名(保留WWW前缀)
为主域名www.rakyat.news配置正常的请求处理server块:
server { listen 80; listen 443 ssl; server_name www.rakyat.news; # HTTPS相关配置(启用时添加) ssl_certificate /path/to/your/cert.pem; ssl_certificate_key /path/to/your/key.pem; # 主域名的业务配置,如根目录、索引文件等 root /var/www/rakyat-news; index index.html index.php; # 其他业务相关配置(如反向代理、PHP解析等)... }
如果需要将无WWW的主域名rakyat.news也统一重定向到www.rakyat.news,可额外添加以下server块:
server { listen 80; listen 443 ssl; server_name rakyat.news; ssl_certificate /path/to/your/cert.pem; ssl_certificate_key /path/to/your/key.pem; return 301 https://www.rakyat.news$request_uri; }
3. 配置无WWW的子域名
为每个子域名(如politik.rakyat.news)配置对应的业务处理server块:
server { listen 80; listen 443 ssl; server_name politik.rakyat.news; # 子域名的SSL证书路径(需覆盖对应子域名) ssl_certificate /path/to/your/subdomain-cert.pem; ssl_certificate_key /path/to/your/subdomain-key.pem; # 子域名的业务配置 root /var/www/politik-rakyat-news; index index.html index.php; # 其他业务相关配置... }
配置后验证
- 执行
nginx -t检查配置语法是否正确 - 执行
systemctl reload nginx(或对应系统的重启命令)使配置生效 - 确保DNS解析中,所有带WWW的子域名均指向Nginx服务器IP
内容的提问来源于stack exchange,提问作者Muhammad Hasan Bahtiar
相关产品推荐
相关产品推荐

