У меня есть следующее правило mod_rewrite:
RewriteRule ^([^/.]+)/?$ search.php?action=procedure&procedureName=$1
Это отлично работает в перенаправлении таких вещей, как / blabla, на /search.php?action=procedure&procedureName=blabla
Проблема в том, что иногда я хочу передать значение «начало» (для разбивки на страницы). Например, / blabla /? Start = 20.
В настоящее время он просто игнорирует это. Распечатка массива $ _REQUEST не показывает «start». Я пробовал изменить правило:
RewriteRule ^([^/.]+)/\?start=([0-9]+)$ search.php?action=procedure&procedureName=$1&start=$2 RewriteRule ^([^/.]+)/?$ search.php?action=procedure&procedureName=$1
Но это ничего не делало.
Есть идеи?
благодаря
RewriteRule ^([^/.]+)/?$ search.php?action=procedure&procedureName=$1 [L,NC,QSA]
QSA
означает, что строка запроса добавляется, и она добавит $ _GET vars, который вы передадите. В противном случае они обычно не добавляются.
RewriteRule применяется к пути. Вы должны использовать RewriteCond для соответствия строке запроса.
http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule
Чтобы просто передать строку запроса, используйте% {QUERY_STRING}
RewriteRule ^([^/.]+)/?$ search.php?action=procedure&procedureName=$1&%{QUERY_STRING}
На самом деле я думаю, что нашел свой ответ:
RewriteRule ^([^/.]+)/?$ search.php?action=procedure&procedureName=$1 [QSA]
QSA позволяет передавать строки запроса. Правильно?