Текущий статус: Во-первых, я хотел бы отметить, что этот вопрос очень сильно связан с вопросом, который я разместил два дня назад.С тех пор я пытался решить проблему, с которой столкнулся, и столкнулся с другими проблемами.Надеюсь, это не является «двойным постом»?
Я создал два правила переписывания модов, которые, кажется, работают изолированно для создания желаемого эффекта.Они показаны ниже:
RewriteCond %{QUERY_STRING} (.*)
RewriteRule ^(.*/)?([A-Za-z0-9.-]+)_([A-Za-z0-9.-]*) $1?$2=$3&%1 [L]
Приведенное выше правило принимает URL-адрес, подобный следующему:
www.site.com/param1/thing/sortorder_5/getparam2_6/
, и преобразует его в следующее:
www.site.com/param1/thing/?sortorder=5&getparam2_6/
Второе правиловыглядит следующим образом:
RewriteCond %{QUERY_STRING} (.*)
RewriteRule ^(.*/)?((?:cmd)[^/]*)/((?!(?:cmd)[.+]*)(.+)) $1?$2=$3&%1 [L]
Этот URL-адрес принимает следующий код:
http://www.site.com/cmd/param1/thing/cmd2/param2/
и преобразует его в следующий код:
http://www.site.com?cmd=param1/thing&cmd2=param/
Желаемый результат:
Я хотел бы объединить эти два правила перезаписи, чтобы я мог сделать следующее:
http://www.site.com/cmd/param1/cmd2/param2/sortorder_5
преобразуется в:
http://www.site.com?cmd=param1&cmd2=param2&sortorder=5
Любой, кто скажет мне, как начать, был бы очень любезен.Я экспериментировал с МНОЖЕСТВОМ кода переписывания модов в течение нескольких дней, но не повезло.Мои знания по переписыванию regex / mod на самом деле не на пустом месте, поэтому мои извинения за это!Весь код переписывания модов вставлен ниже.Спасибо.
RewriteEngine On
# This block works fine in isolation
RewriteCond %{QUERY_STRING} (.*)
RewriteRule ^(.*/)?([A-Za-z0-9.-]+)_([A-Za-z0-9.-]*) $1?$2=$3&%1 [L]
# This block also works fine in isolation
RewriteCond %{QUERY_STRING} (.*)
RewriteRule ^(.*/)?((?:cmd)[^/]*)/((?!(?:cmd)[.+]*)(.+)) $1?$2=$3&%1 [L]
# This block should append the query string to index.php (front controller)
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^.*$ index.php?%1 [L]