2015-04-14 3 views
0

У меня есть форма поиска, которая использует URL-адрес, но в результатах поиска из-за того, что URL-адрес не получает значения get из URL-адреса, выше я оставляю ссылку URL-адреса и код из .htaccess, возможно, кто-то может понять, что является ошибкой/проблемой.Mod_rewrite Результаты поиска

http://www.domain.com/en/jobs.php?Keywords=&Location=2&Category=

RewriteRule ^(es|en|pt|fr|pl|de|ro|it)/jobs.php?Keywords=(.*)&Location=(.*)&Category=(.*)$ jobs.php?lang=$1&Keywords=$2&Location=$3&Category=$4 

ответ

-1

Это должно работать до тех пор, как параметры в строке запроса всегда приходят в том же порядке:

RewriteEngine On 
RewriteCond %{QUERY_STRING} Keywords=(.*)&Location=(.*)&Category=(.*)$ [NC] 
RewriteRule ^(es|en|pt|fr|pl|de|ro|it)/jobs.php jobs.php?lang=$1&Keywords=%1&Location=%2&Category=%3 [L] 

Вы должны смотреть конкретно в строке запроса и применить regex. Затем вы можете использовать их в переписывании с обратным опорным символом: %

+0

Было бы хорошо, если бы downvoter мог объяснить причину! – arco444

+0

спасибо @ arco444, я как бы новый в htacess регулярных выражениях, но что вы имеете в виду под «применить группы захвата регулярных выражений», не могли бы вы привести мне пример? – mike

+0

Группа захвата такова, что в скобках '(...)'. Механизм регулярных выражений будет хранить совпадения в скобках в качестве переменных. В случае «RewriteCond» есть три, которые выполняют * жадное соответствие *. * '. Они доступны в apache как '% 1','% 2' и '% 3'. «RewriteRule» содержит одну группу, которая содержит ваши совпадения. Это доступно как '$ 1'. Вы можете объединить все четыре в перезаписи, как показано. Это помогает? – arco444

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