In practice, this is a non-issue. Instead of thinking of your routers as "the interface" and your controllers as "implementation" you can think of the controllers as the interface and everything else as "implementation". If you're concerned about arbitrarily changing class and methods names that are only used as interaction points for the user, you should be similarly concerned about arbitrarily changing routing logic.
Way to expose internal details about your implementation, though.