Bom, estava fazendo uma migração de um site para drupal, este site possui diversos artigos que eram acessados através de um padrão de url:
http://www.site.com/ler.php?id=455
Ao converter para o drupal eu precisava fazer com que essas urls continuassem funcionando pois é um site já bastante indexado por motores de busca e diversas referências externas, entao utilizei o módulo do apache chamado mod_rewrite, muito útil nessas situações..
editando o arquivo .htaccess no diretório root da instalação do drupal adicione a regra abaixo um pouco antes da última regra padrão do Drupal.
RewriteCond %{QUERY_STRING} ^id=([0-9]+)$
RewriteRule ler.php node/%1 [L]
o comando RewriteCond define a condição para a regra ser executada, nesse caso é necessário possuir a variável id com um valor numérico. Assim quando acessarmos a url http://www.millarch.org/ler.php?id=3 irá funcionar como se estivesse acessando a url: http://www.millarch.org/node/3.
let’s go to part 2!
bom, o recurso acima não fica tão legal porque apenas fazemos com que a url antiga funcione e assim as urls antigas continuariam sendo indexadas, então para melhorar esta situação precisamos fazer também um redirect usando (301 Moved Permanently) e assim informamos ao indexador que a url foi alterada e assim atualizar a referência..
vamos agora fazer com que a regra redirecione para a nova url.
RewriteCond %{QUERY_STRING} ^id=([0-9]+)$
RewriteRule ler.php http://www.millarch.org/node/%1? [R,L]
agora irá funcionar assim:
http://www.millarch.org/ler.php?id=3 irá redirecionar para http://www.millarch.org/node/3
Não existe uma forma melhor de fazer isso, pois toda a url acessada passa obrigatoriamente pelo arquivo index.php, esta regra está definida no arquivo .htaccess, então fazendo com o mod_rewrite podemos aplicar nossa regra antes de executar a regra padrão do drupal ( redirect to index.php ).