wordpress 404 not found after rewrtie the author link

The function get_author_posts_url retrieves the url where the posts of a certain author are to be found. If you change the url, that doesn’t mean the posts are moved.

In other words, you have moved a sign directing you to Buckingham Palace and expect that by doing so you also have relocated the palace. In effect, as you found out, you end up in the middle of nowhere.

Also beware that since you are modifying the existing filter author_link, the modification will also apply to calls originating in other functions. If you want to apply a filter to a custom made function, it is better to define a custom named filter as well.