Mod Rewrite и использование PHP GET для URL-адресов, когда не соблюдают правила

Я не мог придумать хорошего названия для этого, это трудно объяснить. В принципе, у меня есть mod_rewrite setup на моем сервере. Он превращает каждый ?a=1&b=2&c=3 etc into /1/2/3/

Я хочу реализовать функцию, где я могу сделать что-то вроде этого: /login/?return_url=/home/ Return_url будет меняться в зависимости от того, где был последний пользователь. Я знаю, что есть другие способы определения возвращаемого URL-адреса, но я хотел бы сохранить его в URL-адресе.

Моя проблема в том, что следующее не работает: /login/?return_url=/home/

Однако, /login.php?return_url=/home/ работает.

Почему PHP не может видеть переменную return_url в первой (предпочтительной) ситуации?

Вот мой текущий код:

 RewriteRule ^(.*)/(.*)/(.*)/([A-Za-z0-9_-]+)/$ /?a=$1&b=$2&c=$3&d=$4 [L] RewriteRule ^(.*)/(.*)/([A-Za-z0-9_-]+)/$ /?a=$1&b=$2&c=$3 [L] RewriteRule ^(.*)/([A-Za-z0-9_-]+)/$ /?a=$1&b=$2 [L] RewriteRule ^([A-Za-z0-9_-]+)/$ /?a=$1 [L] 

Related of "Mod Rewrite и использование PHP GET для URL-адресов, когда не соблюдают правила"

Директива QSA вероятно, является тем, что вы ищете:

'qsappend|QSA' (добавить строку запроса)
Этот флаг заставляет механизм перезаписи добавить строку строки запроса строки замены в существующую строку вместо ее замены. Используйте это, когда вы хотите добавить больше данных в строку запроса с помощью правила перезаписи.

Например,

 RewriteRule ^something/([0-9]+)$ something.php?id=$1 [QSA] 

Позволит something/9?key=val перейти к something.php?id=9&key=val