We consider the problem of routing a data packet through the visibility graph of a polygonal domain P with n vertices and h holes. We may preprocess P to obtain a label and a routing table for each vertex. Then, we must be able to route a data packet between any two vertices p and q of P, where each step must use only the label of the target node q and the routing table of the current node. For any fixed ϵ > 0, we present a routing scheme that always achieves a routing path that exceeds the shortest path by a factor of at most 1 + ϵ. The labels have O(log n) bits, and the routing tables are of size O((ϵ-1+h) log n). The preprocessing time is O(n2 log n+hn2+ ϵ-1hn). It can be improved to O(n2 + ϵ-1n) for simple polygons.