Проблема с переменными формы htaccess GET в переписанном URL - PullRequest
0 голосов
/ 09 июня 2011

По сути, моя проблема таковаУ меня есть система MVC, которая перенаправляет все запросы на index.php на моем сайте.У меня в файле htaccess есть правило перезаписи, которое обрабатывает такие запросы следующим образом:

RewriteRule ^([a-zAZ\_\-]+)\/([a-zA-Z\_\-]+)\/([^\/?]*) /?module=$1&class=$2&event=$3

, что переводит URL-адреса в URL-адреса такого типа

http://example.com/users/login/
http://example.com/users/info/me

Моя проблема в том, что я также хочу получить GETпеременные, которые будут применяться и использоваться в URL-адресе, вот так

http://example.com/users/login/?var1=val1&var2=val2
http://example.com/users/info/me?var1=val2...

Я написал два разных регулярных выражения, которые прекрасно работают в моей рабочей среде (expresso), и я протестировал их в PHP, однако они отказываютсяработать в htaccess.Они не особо сложны, я попробовал:

^([a-zAZ_\-]+)\/([a-zA-Z_\-]+)\/([^\/\?]*)[\?]*(.*) /?module=$1&class=$2&event=$3&$4
and
^([a-zAZ_\-]+)\/([a-zA-Z_\-]+)\/([^\/\?]*)(?(?=\?)\?(.+)) /?module=$1&class=$2&event=$3&$4

Ни одна из этих работ, и я ломаю голову над тем, почему.По сути, он просто не распознает четвертую группу и не возвращает ничего, я думал, что это могло произойти из-за того, что он был рядом с амперсандом, но я сделал & var = $ 4 в качестве теста, и он все равно упал.

Любая помощьс этим будет очень признателен, так как это сводит меня с ума.

Заранее спасибо, Руперт С.

1 Ответ

3 голосов
/ 09 июня 2011

Ведь это то, что вам нужно:

RewriteRule ^([a-z_-]+)/([a-z_-]+)/([^/?]*) /?module=$1&class=$2&event=$3 [QSA,NC,L]

[QSA] добавит дополнительные параметры GET к переписанной строке запроса.

[NC], поскольку регистр не учитывается, нет необходимости в совпадениях A-Z

...