/ / отримати змінні в рядку запиту re_writes - php, .htaccess, mod-rewrite

отримати змінні в рядку запиту re_writes - php, .htaccess, mod-rewrite

Я намагаюся поєднати ці чотири змінні 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 = місто, Лондон

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