If you've learned about permutations and combinations in school, the "combinations of 14 things taken 7 at a time" may be familiar. Think of it as having 14 numbers in a bag. You pick out seven of them and label them "up". The seven left in the bag are labelled "right". The resulting labels correspond to a one-step-at-a-time path across the chessboard. The number of distinct ways you can pick seven numbers from a bag of 14 is called the number of "combinations of 14 things taken 7 at a time". It is computed with factorials: ##C(14,7) = \frac{14!}{7!\cdot7!}##
Edit: To be clear, the above is for the one-step-at-a-time version and what follows allows for the rook moves of one or more steps.
The number of ways of going corner to corner is found by considering every possible move and adding up the number of ways of going from corner to corner in the resulting, smaller rectangle. If you use f(n,m) to denote the number of ways of going from corner to corner on a n by m rectangle then...
f(1,1) = 1
and
f(n,m) = f(n-1,m) + f(n-2,m) + f(n-3,m) + ... + f(1,m) + f(n,m-1) + f(n,m-2) + f(n,m-3) + ... f(n,1)
By "iterating", I mean starting with a 1x1 rectangle and computing the number of ways to traverse that. Then use the above relationships to figure out how many ways of traversing a 1x2 and 2x1 rectangle. Then use those to figure out how many ways of traversing 1x3, 2x2 and 3x1 rectangles. Keep going until you hit 8 by 8.
By "memoizing", I mean doing computation as a recursive function call and optimizing it with memoization. That means that each time you make a recursive call, you write down (aka memorize) the result. This means that you only have to evaluate each rectangle once. Since there are only 64 possible rectangles up to 8x8, that only takes 64 memory cells.
http://en.wikipedia.org/wiki/Memoization