script.php?key1=val1&key2=val2
в понятный адрес вида
/script/val1/val2/
потому как и выглядит лучше, и поисковыми роботами приветствуется. Однако вариант обработки
/script/val1/val2/?key3=val3
для меня был неочевидным. Сначала пробовал выцепить параметры запроса regexp'ом:
#This won't work
RewriteEngine On
RewriteRule ^script/(.*)/(.*)/(\?(.*))? /script.php?key1=$1&key2=$2&$3
RewriteEngine On
RewriteRule ^script/(.*)/(.*)/(\?(.*))? /script.php?key1=$1&key2=$2&$3
Но этот вариант, конечно же, не заработал. Решение оказалось куда проще — флаг [QSA], что буквально так и значит: Query String Append, т.е. «Приклеить строку запроса».
#Solution
RewriteEngine On
RewriteRule ^script/(.*)/(.*)/ /script.php?key1=$1&key2=$2 [QSA]
RewriteEngine On
RewriteRule ^script/(.*)/(.*)/ /script.php?key1=$1&key2=$2 [QSA]
Использование этого флага добавляет входящую строку запроса key3=val3 к перезаписанной mod_rewrit'ом, и на выходе получается key1=val1&key2=val2&key3=val3.
1 comment:
Огромное спасибо! Именно то что я искала
Post a Comment