2009-10-20 5 views
3

У меня есть следующие mod_rewrite правил:mod_rewrite передачи переменных

RewriteRule ^([^/.]+)/?$ search.php?action=procedure&procedureName=$1 

Это прекрасно работает в перенаправлении вещи, как/BlaBla к /search.php?action=procedure & ИмяПроцедура = блабло

Проблема заключается в том, что иногда я хочу передать значение «начало» (для разбивки на страницы). Например,/blabla /? Start = 20.

В настоящее время он просто игнорирует его. Распечатка массива $ _REQUEST не показывает «start». Я пробовал изменить правило:

RewriteRule ^([^/.]+)/\?start=([0-9]+)$ search.php?action=procedure&procedureName=$1&start=$2 
RewriteRule ^([^/.]+)/?$ search.php?action=procedure&procedureName=$1 

Но это ничего не делало.

Любая идея?

Thanks

+0

Возможный дубликат переменных [Mod_rewrite и $ _GET] (http://stackoverflow.com/questions/1498966/mod-rewrite-and-get-variables) – outis

ответ

11
RewriteRule ^([^/.]+)/?$ search.php?action=procedure&procedureName=$1 [L,NC,QSA] 

QSA означает строку запроса Append, и он будет добавить $ _GET вары вы проходите. В противном случае они обычно не добавляются.

2

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} 
1

На самом деле я думаю, что я нашел свой ответ:

RewriteRule ^([^/.]+)/?$ search.php?action=procedure&procedureName=$1 [QSA] 

QSA позволяет ему передать строки запроса. Справа?

Смежные вопросы