修改canonical方法