Quick note to self in case I (inevitably) forget later. If you are using Apache mod_rewrite to make nice, clean URLs, and are also supporting JSONP, you may run into the situation where you have code that wants to append "?callback=xxx" to your URL (e.g., a cross-domain AJAX call in jQuery). Imagine you have a nice clean URL
/user/123
, which actually corresponds to
user.php?id=123
. If you append
?callback=xxx
to the URL then chances are the code will break, because mod_rewrite will rewrite the URL to something like
user.php?id=123?callback=xxx
. What you actually want to send to your web server is
user.php?id=123&callback=xxx
(note the & before "callback"). After much grief trying to figure out how to coerce Apache mod_rewrite into handling this situation I found
the answer, of course, on Stack Overflow. If you use the
[QSA]
flag, Apache will append the additional callback parameter onto the end of the rewritten URL, so JSONP will now work. Once again, Stack Overflow turned a show-stopper into a learning experience.