WordPress自定义URL重写规则问题排查:assetlinks.json
重写规则失效的排查与修复
以下是导致你的add_rewrite_rule未生效的常见问题及解决办法:
正则表达式未转义特殊字符
原规则中的.是正则通配符,会匹配任意字符,而非字面意义的点号。正确的正则应该转义.:add_rewrite_rule( '^\.well-known/assetlinks\.json$','index.php?asset-link=assetlinks', 'top' );未刷新WordPress重写规则
添加规则后必须刷新重写规则才能生效:进入后台「设置-固定链接」页面,无需修改设置,直接点击「保存更改」,WordPress会自动更新重写规则配置。未注册自定义查询变量
WordPress默认不识别asset-link这个自定义参数,需要先注册:function register_assetlink_query_var( $vars ) { $vars[] = 'asset-link'; return $vars; } add_filter( 'query_vars', 'register_assetlink_query_var' );缺少请求处理逻辑
规则仅完成了请求转发,还需添加处理逻辑输出JSON内容:function handle_assetlinks_request() { if ( get_query_var( 'asset-link' ) === 'assetlinks' ) { header( 'Content-Type: application/json' ); // 替换为你的assetlinks实际内容 echo json_encode( [ [ "relation" => ["delegate_permission/common.handle_all_urls"], "target" => [ "namespace" => "android_app", "package_name" => "com.your.app", "sha256_cert_fingerprints" => ["你的应用SHA256指纹"] ] ] ] ); exit; } } add_action( 'template_redirect', 'handle_assetlinks_request' );服务器配置冲突
- Apache:确保站点目录的
.htaccess文件有写入权限,且WordPress能正常写入重写规则。 - Nginx:需手动在server块中添加规则(Nginx不支持
.htaccess):location /.well-known/assetlinks.json { try_files $uri $uri/ /index.php?asset-link=assetlinks; }
- Apache:确保站点目录的
内容的提问来源于stack exchange,提问作者Andrés Gómez
相关产品推荐
相关产品推荐

