Я столкнулся с проблемой перезаписи 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]