2010-02-08 5 views
0

Я пытаюсь найти решение для перезаписи мод для моей проблемы.mod rewrite with many parameters

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

Позвольте мне продемонстрировать пример 3 параметров (х, у, г)

URL-адрес является list.php? Х = 1 у = г = 3, так правило будет

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

До сих пор хорошо.

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

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

ИЛИ

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

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

list.php?z=4 

ИЛИ

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 страниц правил и быть проще изменить

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

+0

Если параметры могут быть в любом порядке, они не должны передаваться как информация о пути. Информация о пути предназначена только для иерархических имен. – outis

+0

По какой-либо причине вы не просто используете строку запроса? – outis

+0

SEO является причиной – ntan

ответ

0

Что-то, как это должно работать

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

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

+0

Спасибо, что применили, но у меня не могут быть пустые параметры – ntan

+0

Так что это сломается? /list.php?x=&y=1 – ziya