Criação de URLs “intuitivos”

Tive que fazer isso para um site de projeto no qual estava trabalhando recentemente. Sabíamos que queríamos que o perfil do usuário pudesse ser acessado digitando www.url.com/username . Este foi, mais ou menos, criado automaticamente quando o usuário criou um perfil. Eu tive dezenas de idéias, todas elas não seguras ou excessivamente complicadas. Finalmente, a resposta veio para mim: .htaccess e expressões regulares .

Nosso servidor é baseado em Linux e executa Apache para o servidor web. Porque usamos Apache, podemos usar .htaccess … e é uma coisa linda.

Um arquivo .htaccess é usado por vários motivos:

  • Para redirecionar um usuário para o Arquivo B quando tentar acessar o Arquivo A
  • Restringir / permitir o acesso a diretórios ou arquivos específicos (com uma pequena ajuda de .htpasswd)
  • Para embelezar URLs longos e enigmáticos

A maneira pela qual .htaccess realiza o # 3 é através da reescrita de mod . Aqui temos mais algumas informações sobre este módulo Apache. Para ativar a reescrita de mod , adicione as duas linhas a seguir ao arquivo .htaccess:

Options +FollowSymlinks
RewriteEngine on

Para fins de exemplo, digamos que o arquivo PHP que lida com a exibição de um perfil de usuário seja denominado profile.php. Além disso, um nome de usuário pode ser composto por números, letras (maiúsculas e minúsculas), pontos, hifens e sublinhados. Adicionando a seguinte regra:

RewriteRule ^([A-Za-z0-9._-]+)+[^.php]$ profile.php?&uri=$0 [NC]

no arquivo .htaccess irá reescrever http://www.url.com/username para http://www.url.com/profile.php?uri=username . Uma observação importante sobre a reescrita é que http://www.url.com/username é o que ainda é exibido na barra de endereços do navegador. Portanto, um URL intuitivo!

Uma explicação da expressão regular usada na regra está além do escopo desta postagem. Leia mais sobre como usar expressões regulares com mod_rewrite.