If all that's changing between the different URLs is a view of the data, I would route everything into the same controller/action as quasipickle mentioned. You can do with a route like:
$router->add(
"/{city:[a-z]+}",
array(
"controller" => "city",
"action" => "index"
)
);
However, this will catch everything like site.com/not-a-city, which is likely bad. I would instead recommend you something instead like:
$router->add(
"/city/{city:[a-z]+}",
array(
"controller" => "city",
"action" => "index"
)
);
This way you can still have other pages that don't conflict with city.
Note once you're in your index action, you can then render your template file using the getParam ... this will let you isolate city1 and city2 into separate templates without having to code new controllers or routes.