Нет, это совершенно правильная идея.Вы бы в основном хотели позволить пользователю писать URI неструктурированным образом, без строгого порядка, верно?Например, я мог бы написать дающее дерево / page-6 / endAge-23?
Если так, то это то, что вы ищете:
RewriteRule /beginAge-([0-9]+) giving-tree.php?beginAge=$1 [QSA,NC]
RewriteRule /endAge-([0-9]+) giving-tree.php?endAge=$1 [NC,QSA]
RewriteRule /page-([0-9]+) giving-tree.php?page=$1 [NC,QSA]
Видите ли, если любая часть URI совпадает с выражением "/ beginAge - ([0-9] +)", оно будет перенаправлено наiving-tree.php? beginAge = $ 1;Волшебство делается с помощью параметра QSA Query String Append, который, ну, в общем, добавляет любую существующую строку запроса к результирующему URI.Таким образом, поскольку все больше и больше совпадений найдено и добавлено все больше GET-параметров, строка запроса просто увеличивается.
Если вы хотите более строгую вещь, где некоторые параметры являются необязательными, но их порядок фиксирован, то это более уродливопо величинам:
RewriteRule /(beginAge-)?([0-9]+)/?(endAge-)?([0-9]+)?/?(page-)?([0-9]+)? giving-tree.php?beginAge=$2&endAge=$4&page=$6 [NC]
Я просто сделал все необязательным, используя?оператор.Этот может использовать некоторые предварительные / реструктурирующие.
(В качестве альтернативы, вы можете просто сделать это:
RewriteRule ^giving-tree/([^/]+)/?$ process.php?params=$1 [nc]
То есть, захватывая всю часть URI после части дающего дерева,объединяя все это в один параметр, затем обрабатывая его с помощью PHP (поскольку он несколько лучше приспособлен для работы со строками). Но первая версия, безусловно, более элегантна.)
Кстати, вы уверены, что([0-9 +]?) части?Это означает «один или ни одного символа, который может быть цифрой или знаком плюс».Я думаю, что вы имели в виду ([0-9] +), то есть «одна или несколько цифр».