Я намагаюся поєднати ці чотири змінні 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 працює www.domain.com/search/City/London, але це не "
Відповіді:
2 для відповіді № 1Чому б просто не додати інші правила перезапису, що випереджають це. 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.
РЕДАГУВАТИ
Приємна річ у виконанні всього цього в .htaccess проти PHP полягає в тому, що для цього потрібно менше логіки, і ви передаєте те, що хочете, своєму сценарію у правильних значеннях. Моїм уподобанням буде використання .htaccess вище.
2 для відповіді № 2
Ви можете використовувати це, щоб захопити весь шлях як текст і проаналізувати 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
$ paths = місто, Лондон, 5, зростаючий
www.domain.com/search/City/London
$ paths = місто, Лондон
Ви можете використовувати цикл і пару як ключ / значення ... якщо потрібно