мод переписать с большим количеством параметров - PullRequest
0 голосов
/ 08 февраля 2010

Я пытаюсь найти решение моей проблемы для переписывания модов.

У меня есть почти 6 параметров, которые я передаю в свой URL, и я хочу переписать.

Позвольте мне продемонстрировать пример 3 параметров (x, y, z)

URL-адрес - list.php? X = 1 & y = 2 & z = 3, поэтому правило будет

RewriteRule ^list/x/([^/\.]+)/y/([^/\.]+)/z/([^/\.]+)/?$ list.php?x=$1&y=$2&z=$3

Пока все хорошо.

Действительно сложная часть (по крайней мере для меня) заключается в том, что параметры x, y, z не имеют прогнозируемого порядка, поэтому URL может быть

list.php?z=2&x=4&y=9

OR

list.php?y=2&z=4&x=9

PLUS параметры могут прийти не все вместе EX

list.php?z=4

OR

list.php?x=7&z=7

ИЛИ любую комбинацию из 3 аргументов

Итак, для 3 аргументов мне нужно написать все возможные комбинации (RewriteRule)

Так что мой htaccess - это 7 страниц с 6 параметрами, и если вы хотите добавить еще одно, то должны написать новые правила и исправить все остальные

Есть ли другой способ сделать это.

НА ПРИМЕРЕ

если мод переписывает каждый параметр отдельно, но когда из URL приходит более одного параметра, чтобы объединить правила для каждого параметра.

Пример * * одна тысяча тридцать шесть

RewriteRule parameter x rewrite to x/$1
RewriteRule parameter y rewrite to y/$2

Таким образом, когда оба параметра приходят, становится х / $ 1 / г / $ 2

ИЛИ какой-нибудь умный способ, которым мне не нужно писать 7 страниц правил и их легче изменить

Я надеюсь, что все ясно

1 Ответ

0 голосов
/ 08 февраля 2010

Как то так должно работать

RewriteRule ^list/(?=(?:x/(\d+))?)(?=(?:y/(\d+))?) /list.php?x=$1&y=$2

Хотя он выдаст пустые параметры, но это может быть нормально.

...