Eu andei procurando como reescrever o get method de um form no formato usado tradicionalmente do url rewrite, e para minha surpresa a resposta mais popular tratava esse problema simples de maneira pouco otimizada.
O primeiro link do google é do site do Matthew, assim como vários subsequentes que referenciam o proprio site do Matthew. A abordagem dele consistem em gerar um get para uma url que converte no lado do servidor a url para o estilo com barras e retorna o cabeçalho http com o location da url "ajeitada". A argumentação e motivação de porque esse é um assunto importante, para mim, é a mesma do Matthew. Então vou deixar essa parte para que vc leia no site do autor original.
Porém, é totalmente desnecessário fazer uma consulta para o servidor para gerar uma string. Então eu escrevi esse simples script usando dojo que converte os forms get para forms url rewrited.
<script type="text/javascript">
dojo.addOnLoad(function() {
var form = dojo.query('form[method=get]');
//pode existir mais de 1 form; Não foi tratado aqui!
dojo.connect(form[0], 'onsubmit', function(e) {
e.preventDefault();
var location = '';
var inputs = dojo.query('form[method=get] input[name]');
for(i = 0; i < inputs.length; i++) {
location += '/' + inputs[i].name + '/' + inputs[i].value;
//sempre deve existir um campo hidden com name como controller e value como action
}
document.location = location;
});
});
</script>
<form method="GET" >
<input type="hidden" name="paginator" value="index" >
<input type="text" name="q">
</form>