Проблемы с mod_rewrite и GET - PullRequest
       4

Проблемы с mod_rewrite и GET

0 голосов
/ 02 декабря 2010

Итак, у меня ранее был вопрос о mod_rewrite, который вы найдете здесь mod_rewrite, изменяющий / subpage / to / subpage

Но теперь у меня возникла совершенно новая проблема с этим ... Какзаставить работать GET?

Например, если мне нужно передать некоторые переменные с помощью GET, например: mypage.com/subpage/?name=Jamie

Мой mod_rewrite выглядит так:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule ^([A-Za-z0-9-]+)/?$ ?p=$1 [L]

Я понимаю, что проблема, вероятно, связана с тем, что я уже прошел и переписал один запрос GET.Так как мне настроить это, чтобы принять любой другой GET-запрос, который мне может понадобиться обработать?

ОБНОВЛЕНИЕ:
Чтобы немного прояснить проблему.Если я попытаюсь загрузить URL-адрес mypage.com / subpage /? Name = Jamie , как если бы я использовал url mypage.com / subpage / , и имя не будет передано.Используя мой оригинальный URL mypage.com? P = subpage & name = Jamie работает как надо.

Я думаю, мне нужно как-то настроить это ... но как?
Спасибо зане торопитесь, читая мой, вероятно, простой вопрос!

Ответы [ 2 ]

3 голосов
/ 02 декабря 2010

Используйте флаг QSA - Строка запроса. Добавить :

RewriteRule ^([A-Za-z0-9-]+)/?$ ?p=$1 [L,QSA]

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

0 голосов
/ 02 декабря 2010

1001 * попробовать *

RewriteRule ^([A-Za-z0-9-]+)/\?$ ?p=$1 [L]

как '?' является метасимволом в регулярном выражении, его необходимо экранировать

...