Hi Richard.
I want to make old fashioned URLs like: http://www.sara.uea.ac.uk/search_from_listings.php?artist_id=13 redirect to the new ones: http://www.sara.uea.ac.uk/?artist&id=13
The new ones have a rather odd format. You're not already using some other rewriterule to translate them or something are you?
I've tried this rewrite rule (and about a million permutations of it):
RewriteRule ^/search_from_listings.php?artist_id=([0-9]+)$ http://www.sara.uea.ac.uk/?artist&id=$1
I don't think you can rewrite urls with querystrings like that. IIUC you need to use rewritecond and %{QUERY_STRING}. Rewriterule doesn't consider the querystring to be part of the URL.
For some reason this: RewriteRule ^/search_from_listings.php?(.*)$ http://www.sara.uea.ac.uk/$1
matches (though it doesn't do anything useful).
That's because it's interpreting the 'p?' as a regular expression meaning zero or one instances of 'p'. Since this is followed by (.*) it'll match anything starting with /search_from_listings.ph.
Hope this is some help,
Joe x