Переписать правило для нескольких переменных, используя Apache mod_rewrite - PullRequest
2 голосов
/ 05 июля 2010

Я хотел бы знать, как я могу переписать www.site.com?lang=lv&type=1&mode=2 в www.site.com/lv/1/2 с помощью параметров Apache mod_rewrite.

Ответы [ 3 ]

1 голос
/ 05 июля 2010

Предполагая, что вы действительно хотите переписать /lv/1/2 в ?lang=lv&type=1&mode=2 (я не вижу причин делать обратное) и что никакие другие перезаписи не активны, это должно сработать:

RewriteRule ^/([^/]*)/([^/]*)/([^/]*)$ ?lang=$1&type=$2&mode=$3 [L]

Также;вам лучше заменить эти магические числа более полезной информацией, если вы хотите включить их в свой URI.

Редактировать: Если вы действительно хотите сделать наоборотсм. ответ Мэтта С.

0 голосов
/ 06 июля 2010

Вам нужно обрабатывать путь URI и запрос отдельно. Если параметры отображаются в том же порядке, вы можете сделать это:

RewriteCond %{QUERY_STRING} ^lang=([^&]+)&type=([^&]+)&mode=([^&]+)$
RewriteRule ^$ /%1/%2/%3? [L,R=301]

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

0 голосов
/ 05 июля 2010

Основная перезапись:

RewriteEngine On
RewriteRule http://www.site.com/?lang=(.+?)&type=(\d+?)&mode=(\d+?) http://www.site.com/$1/$2/$3 [L,R=permanent]

Редактировать: Изменены флаги перезаписи для принудительного перенаправления

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...