Iniciante Fundamentos

Reescrita de URL com mod_rewrite

O mod_rewrite reescreve URLs com base em regras e expressões regulares. É usado para URLs amigáveis, redirecionamentos e roteamento de aplicações.

Ativar o módulo

sudo a2enmod rewrite
sudo systemctl restart apache2

Ligar o motor

Antes de qualquer regra, ligue o motor de reescrita:

RewriteEngine On

RewriteRule

Uma regra tem um padrão e um destino:

# /produto/42 vira /produto.php?id=42
RewriteRule ^produto/([0-9]+)$ produto.php?id=$1 [L]
  • ^...$: o padrão da URL (regex).
  • $1: captura do primeiro grupo ( ).
  • [L]: para de processar regras se esta casar.

RewriteCond

Adiciona uma condição antes da regra. Exemplo clássico: enviar tudo para o index.php, exceto arquivos que existem:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]
  • !-f: o arquivo não existe.
  • !-d: a pasta não existe.

Onde colocar

Use dentro de <Directory>, do virtual host ou em .htaccess (com AllowOverride All). Verifique com:

sudo apache2ctl configtest
sudo systemctl reload apache2