The best option is always to leave the URLs unchanged. URLs should never reveal the technology that's running the website; it should merely identify the content. This question on StackOverflow, for example, includes a question ID and a "slug" describing the title, but no indication of what technology might be used to retrieve it.
However, sometimes you have no choice, and the URLs simply have to change to compensate for earlier mistakes. In this case, the best option is to leave behind 301 redirects from the old to the new address. With Apache's
mod_asis, you can create an
index.asis file which is the "as-is" response to the HTTP request — i.e., complete with headers. And thus you can do
The 301 status code is important, since it tells crawlers the page has "Moved Permanently", and most will then update their links accordingly.
If you're doing this in bulk,
mod_rewrite may be better suited. You can create a rewrite rule that performs the same sort of redirect for all pages matching an old-style URL into the corresponding new-style URL. This, of course, demands that there be some pattern to the URLs (or a script that can somehow map old to new).
Either way, the redirects can then remain in place permanently, so even severely antiquated links may continue to work.
Anything short of that leaves open the potential to lose a visitor, since you cannot be sure where old links to your site may lurk. One might, for example, be in my personal bookmarks, which are stored only on my local computer — and you'd never know until I click it to revisit your site some day. So any effort to specifically find and fix old links is necessarily incomplete.
Having said all that, if you absolutely cannot keep the existing URLs and you absolutely cannot use 301 redirects... then yes, you should have Google specifically crawl your site again, which will automatically detect the dead links and discover the new ones.