- When page FooFoo? redirects to page BarBar?, the redirect html is cached as page BarBar?, with the effect that subsequent GETs of page BarBar? claim to be redirects.
- Also, in redirect commands, [[xxx]] some text [[yyy]] links are matched with greedy regexp, so tries to go for a nonsense page, missing the real link which may well exist, see SandBox/Foo? for example.
Short Term Work Around
- When this problem arises, load page ?action=browse&id=BarBar? will reset the page in cache, but only till the next time someone loads FooFoo?. [No longer needed for 1.0.]
- Don't have more than one Freelink on a redirect page! [Continue to avoid doing silly things like this in 1.0. :-]
Possible Fixes
- Suppress write altogether when a redirect is in effect - quite easy to do, return if $oldId ne '' just before the cache write. [Done for 1.0. --CliffordAdams]
- Change + to +? at relevent point in patterns. [Not changed. Current behavior is harmless given improbable bad input. --CliffordAdams]
Work in progress
Stopping for Christmas now, but am re-writing the redirection to be handled entirely internally - this will fix the above bugs in passing, and will also allow multi-stage redirects.
To run my latest test version try http://river.redbricks.org.uk/WikiDemo/IntRedir.cgi?PageA