hash に関してはSiteManager に渡さず、ここで分離しておいた方が良いのでは。

こんな感じ。
`list($link, $hash) = explode('#', $link, 2);`