If it's well tested a straight re-write is the right call. It's when there isn't good test coverage where things ossify.
As an aside, as I understand it, refactoring was popularised as a response basically to this conundrum - it's a technique for reorganising code without changing its functionality. So you can gradually "rewrite" your two page function without losing the accumulated knowledge.