Match Question Mark in mod_rewrite rule regex Match Question Mark in mod_rewrite rule regex apache apache

Match Question Mark in mod_rewrite rule regex


You should be using the [QSA] flag instead of trying to rewrite the query string. [QSA] passes on the query string to the rewritten URL.

So your rule should look like:

...RewriteEngine OnRewriteBase /RewriteRule ^([A-Za-z0-9-_]+)/friends/? friends.php?user=$1 [QSA,L]

Your case is very similar to the example given for using the QSA flag in the mod_rewrite cookbook.


The query is not part of the URL path and thus cannot be processed with the RewriteRule directive. This can only be done with the RewriteCond directive (see %{QUERY_STRING}).

But as Chad Birch already said it suffices th set the QSA flag to automatically get the original requested query appended to the new URL.


In addition to using the rewrite flag QSA, you can also use the QUERY_STRING environment variable as shown below:

RewriteEngine OnRewriteBase /RewriteRule ^([A-Za-z0-9-_]+)/friends$ /friends.php?user=$1&%{QUERY_STRING}

And the URL in question

http://www.example.com/mark/friends?page=2

will be rewritten to (as specified):

http://www.example.com/friends.php?user=mark&page=2