получить переменные в строке запроса re_writes - PullRequest
0 голосов
/ 01 сентября 2010

Я пытаюсь объединить эти четыре переменные get (sch, val, lmt, ord) в красивый URL re_write. В настоящее время у меня есть следующее в моем файле .htaccess, и это работает, если все переменные включены, однако, если я только введу первые две переменные (sch & val), он сломается:

RewriteRule ^search/([^/]*)/([^/]*)/([^/]*)/([^/]*)$ 
             search.php?sch=$1&val=$2&lmt=$3&ord=$4 [L]

www.domain.com / search / City / London / 5 / asc works www.domain.com/search/City/London, но это не

Ответы [ 2 ]

2 голосов
/ 01 сентября 2010

вы можете использовать это, чтобы получить весь путь как текст и разобрать www.domain.com/search/City/London/5/asc работает www.domain.com/search/City/London, но это не

RewriteRule ^search/(.*)$ search.php?url=$1
$paths=explode('/',$_GET('url'));

выход
www.domain.com/search/City/London/5/asc

$ пути = город, Лондон, 5, по возрастанию

www.domain.com / поиск / Город / London

$ пути = город, лондон

Вы можете использовать цикл и пару в качестве ключа / значения ... при необходимости

2 голосов
/ 01 сентября 2010

Почему бы просто не добавить другие правила перезаписи перед этим. IE:

 RewriteRule ^search/([^/]*)$ 
         search.php?sch=$1 [L]
 RewriteRule ^search/([^/]*)/([^/]*)$ 
         search.php?sch=$1&val=$2 [L]
 RewriteRule ^search/([^/]*)/([^/]*)/([0-9]*)$ 
         search.php?sch=$1&val=$2&lmt=$3 [L]
 RewriteRule ^search/([^/]*)/([^/]*)/([0-9]*)/([^/]*)$ 
         search.php?sch=$1&val=$2&lmt=$3&ord=$4 [L]

Это должно работать. Не уверен, что это то, что вам нужно, но я на самом деле не думаю, что это «возможно» сделать, просто выполнив запрос и передав полную строку запроса одной строкой, а затем проанализировав ее на стороне PHP.

EDIT

Приятно делать все это в .htaccess по сравнению с PHP - это требует меньше логики, и вы передаете то, что хотите, вашему сценарию с правильными значениями. Я предпочел бы использовать .htaccess выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...