Nginx特定路径跳过301重定向规则配置求助
Nginx特定路径跳过301重定向规则配置求助
嗨,这个问题很好解决,只需要在你的https-example.conf里给/.well-known/assetlinks.json单独加一个location块,放在全局的location /前面就行——因为Nginx会优先匹配更具体的location规则。
具体配置修改如下:
server { listen 443 proxy_protocol http2; server_name example; # 精确匹配assetlinks.json路径,跳过301重定向 location = /.well-known/assetlinks.json { # 根据S3的实际访问方式配置,以下是两种常见场景 # 场景1:S3通过HTTP/HTTPS地址对外提供访问 proxy_pass https://你的S3桶访问地址/.well-known/assetlinks.json; # 场景2:S3桶已挂载到服务器本地目录 # root /挂载的S3本地目录路径; # 可选:添加JSON类型的响应头,确保文件被正确识别 add_header Content-Type application/json; } # 其余所有请求依然执行301重定向 location / { return 301 https://www.example.com$request_uri; } }
这里还有几个需要注意的细节:
- 用
location =(精确匹配)能确保只有这个特定路径被命中,不会误影响/.well-known下的其他文件 - 如果你的
https-www-example.conf里也配置了/.well-known/assetlinks.json,要保证两个域名下的返回内容完全一致,避免验证时出现不一致问题 - 修改完配置后,一定要先检查语法再重启Nginx:
sudo nginx -t sudo systemctl restart nginx
这样调整后,Google访问example.com/.well-known/assetlinks.json时就会直接返回200状态码和正确的文件内容,不会被重定向到www域名了。
备注:内容来源于stack exchange,提问作者Tom Oakley
相关产品推荐
相关产品推荐

