Вопрос по mod_rewrite

Рейтинг: 0Ответов: 1Опубликовано: 24.01.2015

Есть строка запроса:

http://site.com/option1/option2/option_50?search=поисковая_строка

Как сделать так, чтобы часть строки запроса "option1/option2/option_50" попала в $_GET['options'], а "?search=поисковая_строка" попала в $_GET['search_string']?

Также если строка запроса, например, http://site.com/option1/option2/, то "option1/option2/" попадала в $_GET['options'], а переменна $_GET['search_string'] либо не существовала, либо была пустая.

Помогите, пожалуйста.

Ответы

▲ 1Принят
RewriteRule (.+) /?options=$1 [QSA] # если требуется редирект, то [QSA,R=301]

RewriteCond %{QUERY_STRING} ^search=(\w+)$ [NC]
RewriteRule .+ ?search_string=%1 [L] # если требуется редирект, то [R=301,L]

Проверял здесь. Кажется, в этой песочнице флаг QSA не работает.

Про составления правил для mod_rewrite можно почитать здесь.

На будущее: для таких вещей необходимо использовать роутинг на бэкенде, а не реврайты.