Мод переписать и использовать PHP GET для URL, когда не следует правилам - PullRequest
1 голос
/ 25 июля 2011

Я не мог придумать хорошего названия для этого, это трудно объяснить. В основном, у меня есть настройка mod_rewrite на моем сервере. Оказывается каждый ?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]

1 Ответ

3 голосов
/ 25 июля 2011

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

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

например.,

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

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

...