Как мне написать правило перезаписи .htaccess для преобразования строк запроса в сегментированные URI? - PullRequest
0 голосов
/ 18 мая 2009

Есть ли способ поместить правило перезаписи в htaccess, которое преобразует строки запроса в сегментированные URI? Например,

http://domain.com/controller/method/?a=1&b=2&c=3

должно быть переписано как

http://domain.com/controller/method/a/1/b/2/c/3

Все, что нужно сделать, это удалить? и замените & s и = s на /, но я не совсем уверен, как все это фигурирует в .htaccess ...

Не то чтобы это имело значение, но я использую PHP и CodeIgniter на Apache.

Ответы [ 3 ]

1 голос
/ 18 мая 2009

Почему бы вам не поместить эту логику в свой контроллер CodeIgniter вместо того, чтобы делать это в .htaccess?

Проверьте Руководство пользователя CodeIgniter для обработки строк запроса и URL-адресов.

0 голосов
/ 18 мая 2009

Вот что вы могли бы сделать:

RewriteCond %{THE_REQUEST} ^GET\ /[^?]*\?
RewriteCond %{QUERY_STRING} ^([^&=]+)=?([^&]*)&([^&=]+)=?([^&]*)&?(.*)
RewriteRule ^ %{REQUEST_URI}/%1/%2/%3/%4?%5 [L]
RewriteCond %{THE_REQUEST} ^GET\ /[^?]*\?
RewriteCond %{QUERY_STRING} ^([^&=]+)=?([^&]*)&?(.*)
RewriteRule ^ %{REQUEST_URI}?/%1/%2?%3 [L]
0 голосов
/ 18 мая 2009

Если вы хотите сделать это в .htaccess, вам нужно иметь mod_rewrite.

Правило не слишком сложное. Я приведу вам минимальный пример, и вам нужно настроить регулярное выражение, чтобы удовлетворить ваши потребности.

RewiteRule ^/([a-z]+)/([a-z]+)$ /method/?$1=$2
...