URL перезаписи, содержащий знак вопроса

Я столкнулся с проблемой перезаписи URL. Я использую модификацию модема Apache для перезаписи URL-адресов. Например, я переписываю URL-адрес

  • www.website.com/some/path/
  • request.php?string=some/path/ .

Затем я показываю конкретный ответ для этого URL-адреса. Сейчас мое правило перезаписи выглядит так:

 RewriteRule ^([a-z_/\?]+)$ request.php?string=$1 

Но проблема начинается, если у меня есть URL www.website.com/some/data/?id=12&name=John и переписываю его, я получаю что-то вроде этого: request.php?string=some/data/?id=12&name=John , Кажется, что в этом примере другой вопросительный знак смущает PHP. Если я попытаюсь получить $_GET['string'] в request.php, все, что я получаю, это: some/data/ .

Для дальнейшего использования Gmail делает что-то похожее с его URL-адресом:
https://mail.google.com/mail/?ui=1&shva=1

Я предлагаю (как mario) взглянуть на флаг QSA (Query String Append) . Кроме того, я бы взял вопросительный знак из класса символов в регулярном выражении:

 RewriteRule ^([a-z_/]+)$ request.php?string=$1 [L,QSA]