Nginx配置URL重写失效问题:移除/product/路径
解决Nginx /product/ URL重写不生效的问题
根据你的描述和提供的配置,问题核心在于缺少HTTPS(443端口)的server配置,导致实际访问的HTTPS请求根本没走到你写的重写规则里。以下是具体的修复方案:
问题根源拆解
你的当前配置只监听了80端口(HTTP协议),但用户实际访问的是https://www.beecow.info/...这类HTTPS地址,这部分请求完全没被重写规则所在的server块处理,自然不会有任何变化。
修复后的完整配置
# 处理非www的HTTP请求,跳转到HTTPS的www域名 server { listen 80; server_name beecow.info; return 301 https://www.beecow.info$request_uri; } # 处理www的HTTP请求,直接跳转到HTTPS server { listen 80 default_server; listen [::]:80 default_server; server_name www.beecow.info localhost; return 301 https://$server_name$request_uri; } # 核心:处理HTTPS请求的server块 server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name www.beecow.info; # 替换为你的SSL证书实际路径 ssl_certificate /path/to/your/fullchain.crt; ssl_certificate_key /path/to/your/private.key; root /var/www/html/; # 优先匹配/product/开头的请求,执行重写 location ^~ /product/ { rewrite ^/product/(.*)$ /$1 permanent; # 301永久重定向更利于SEO } # 处理其他所有请求 location / { try_files $uri$args $uri$args/ /index.html; } }
关键调整说明
- 新增443端口server块:这是让重写规则生效的核心,所有HTTPS请求都会进入这个块处理。
- 简化HTTP跳转逻辑:把原来的
if判断换成直接return 301,Nginx官方不推荐在server块用if处理跳转,这样更高效且避免逻辑冲突。 - 优化location匹配优先级:用
^~ /product/替代正则匹配,确保/product/路径的请求优先被处理,不会被后面的location /拦截。 - 改用301永久重定向:如果是永久移除/product/路径,301状态码能告诉搜索引擎旧地址已永久迁移,更符合SEO规范。
验证步骤
- 将修改后的配置替换原文件(通常在
/etc/nginx/nginx.conf或/etc/nginx/sites-available/目录下)。 - 测试配置合法性:
nginx -t - 重启Nginx服务:
systemctl restart nginx(不同系统可能是service nginx restart) - 访问原URL
https://www.beecow.info/product/whosaler-san-pham-shop-dang-590-34-390-k-p345954,应该会自动跳转到移除/product/后的地址。
内容的提问来源于stack exchange,提问作者Nha Phuong
相关产品推荐
相关产品推荐

