Я не мог придумать хорошего названия для этого, это трудно объяснить. В принципе, у меня есть 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]
Директива QSA
вероятно, является тем, что вы ищете:
'qsappend|QSA'
(добавить строку запроса)
Этот флаг заставляет механизм перезаписи добавить строку строки запроса строки замены в существующую строку вместо ее замены. Используйте это, когда вы хотите добавить больше данных в строку запроса с помощью правила перезаписи.
Например,
RewriteRule ^something/([0-9]+)$ something.php?id=$1 [QSA]
Позволит something/9?key=val
перейти к something.php?id=9&key=val