为适配Android深度链接验证,如何为特定URL路径取消www重定向
全站重定向例外配置:保留assetlinks.json路径不跳转
需求背景
要启用Android深度链接自动验证,必须在非www域名(如https://mycompany.com)下托管.well-known/assetlinks.json,但当前全站请求都会重定向到https://www.mycompany.com,导致验证失败。需要实现:其他所有路径保持重定向到www,仅.well-known/assetlinks.json路径直接返回文件,不跳转。
各主流服务器实现方案
Nginx
修改站点的Nginx配置文件,先设置精确匹配的例外规则,再写全站重定向:
server { listen 443 ssl; server_name mycompany.com; # 精确匹配assetlinks.json路径,直接返回文件 location = /.well-known/assetlinks.json { root /var/www/mycompany; # 替换为你的网站根目录路径 access_log off; # 可选:关闭该路径的访问日志 } # 其余所有路径重定向到www域名 location / { return 301 https://www.mycompany.com$request_uri; } # 以下是SSL证书相关配置,根据实际情况填写 ssl_certificate /etc/nginx/ssl/mycompany.crt; ssl_certificate_key /etc/nginx/ssl/mycompany.key; }
提示:
location =是精确匹配,只会命中该 exact 路径,不会影响其他子路径。配置后重启Nginx生效。
Apache
在站点的.htaccess文件或虚拟主机配置中,按顺序添加规则:
RewriteEngine On # 例外规则:匹配assetlinks.json路径,不执行后续重定向 RewriteCond %{REQUEST_URI} ^/.well-known/assetlinks.json$ RewriteRule ^ - [L] # 全站重定向到www域名 RewriteCond %{HTTP_HOST} ^mycompany.com$ [NC] RewriteRule ^(.*)$ https://www.mycompany.com/$1 [R=301,L]
提示:
[L]标记表示这条规则匹配后停止后续规则,确保例外路径不会被重定向。如果是虚拟主机配置,记得重启Apache。
IIS
通过IIS的URL重写模块配置:
- 打开IIS管理器,选中目标站点,进入「URL重写」功能
- 添加例外规则:
- 匹配URL:选择「正则表达式」,输入
^.well-known/assetlinks.json$ - 操作:选择「无」,确保该路径不被重定向
- 匹配URL:选择「正则表达式」,输入
- 添加全站重定向规则:
- 匹配URL:选择「正则表达式」,输入
(.*) - 条件:添加条件,输入
{HTTP_HOST},匹配类型选「匹配正则表达式」,输入^mycompany.com$ - 操作:选择「重定向」,目标URL填
https://www.mycompany.com/{R:1},状态码选「301永久重定向」
- 匹配URL:选择「正则表达式」,输入
验证方式
用curl命令测试非www域名的目标路径,确认返回200状态码和文件内容:
curl -v https://mycompany.com/.well-known/assetlinks.json
如果输出中包含HTTP/1.1 200 OK,且显示assetlinks.json的内容,说明配置成功。
内容的提问来源于stack exchange,提问作者Pankaj Badgujar
相关产品推荐
相关产品推荐

