# 📁 Guia do .htaccess - Avanzato Tecnologia

## O que é o .htaccess?

O `.htaccess` é um arquivo de configuração do Apache (servidor web) que controla:
- ✅ Redirecionamentos
- ✅ Compressão de arquivos
- ✅ Cache do navegador
- ✅ Segurança
- ✅ Performance

---

## 📂 Onde colocar o arquivo?

```
/public_html/           ← Raiz do seu site
    ├── .htaccess       ← COLOQUE AQUI
    ├── index.html
    ├── assets/
    └── ...
```

**IMPORTANTE:** O arquivo deve estar na **mesma pasta** do `index.html`

---

## 📋 Arquivos disponíveis

| Arquivo | Quando usar |
|---------|-------------|
| `.htaccess` | Versão **completa** (recomendada) |
| `.htaccess-simples` | Se o servidor der erro 500 |

---

## 🚀 Como instalar

### Método 1: FTP/cPanel
1. Acesse seu servidor via FTP ou cPanel
2. Vá para a pasta `public_html/` (ou `www/`)
3. Faça upload do arquivo `.htaccess`
4. Pronto!

### Método 2: SSH
```bash
# Conecte ao servidor
ssh usuario@seudominio.com.br

# Vá para a pasta do site
cd /var/www/html
# ou
cd /home/usuario/public_html

# Crie o arquivo
nano .htaccess

# Cole o conteúdo do .htaccess
# Salve: Ctrl+O, Enter, Ctrl+X
```

---

## ⚙️ Configurações incluídas

### 1. **SPA (Single Page Application)**
```apache
RewriteRule ^ index.html [L]
```
→ Todas as URLs vão para `index.html` (necessário para React)

### 2. **Compressão GZIP**
```apache
AddOutputFilterByType DEFLATE text/css application/javascript
```
→ Reduz tamanho dos arquivos em ~70%

### 3. **Cache do Navegador**
```apache
ExpiresByType application/javascript "access plus 1 year"
```
→ Arquivos JS/CSS ficam no cache por 1 ano

### 4. **Segurança**
- Proteção contra clickjacking
- Proteção contra MIME sniffing
- Bloqueio de arquivos ocultos (.git, .env)

---

## 🔧 Configurações opcionais

### Ativar HTTPS (quando tiver SSL)

Descomente estas linhas no `.htaccess`:

```apache
# Forçar HTTPS
<IfModule mod_rewrite.c>
    RewriteCond %{HTTPS} off
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

# HSTS (segurança extra)
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
```

### Forçar SEM www

```apache
<IfModule mod_rewrite.c>
    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]
</IfModule>
```

### Forçar COM www

```apache
<IfModule mod_rewrite.c>
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
```

---

## ❌ Problemas comuns

### Erro 500 (Internal Server Error)

**Causa:** Seu servidor não tem todos os módulos habilitados

**Solução:** Use o `.htaccess-simples`

```bash
# Renomeie o arquivo
mv .htaccess .htaccess-backup
mv .htaccess-simples .htaccess
```

### Página em branco

**Causa:** O mod_rewrite pode estar desativado

**Solução:** Contate seu provedor de hospedagem para ativar:
- `mod_rewrite`
- `mod_deflate`
- `mod_expires`
- `mod_headers`

### Rotas não funcionam (404 em /sobre, /contato)

**Causa:** O redirecionamento para index.html não está funcionando

**Solução:** Verifique se o arquivo .htaccess está na pasta correta

---

## 📊 Testar se está funcionando

### 1. Testar compressão GZIP
```bash
curl -H "Accept-Encoding: gzip" -I https://seudominio.com.br
```

Deve mostrar: `Content-Encoding: gzip`

### 2. Testar headers de segurança
```bash
curl -I https://seudominio.com.br
```

Deve mostrar:
- `X-Frame-Options: SAMEORIGIN`
- `X-Content-Type-Options: nosniff`

### 3. Testar cache
```bash
curl -I https://seudominio.com.br/assets/index-xxx.js
```

Deve mostrar: `Cache-Control: max-age=31536000`

---

## 🌐 Servidores específicos

### cPanel (Hostgator, Locaweb, etc)
1. Acesse: **Arquivos** → **Gerenciador de Arquivos**
2. Vá para `public_html/`
3. Clique em **Upload** e envie o `.htaccess`

### AWS S3 + CloudFront
O S3 não usa .htaccess. Configure:
- **Error Document:** `index.html`
- CloudFront: **Custom Error Response** 404 → 200 para `index.html`

### Vercel/Netlify
Não precisa de .htaccess. Use `vercel.json` ou `_redirects`:
```
/*    /index.html   200
```

### Nginx (servidor diferente)
Se usar Nginx, crie um arquivo de configuração:
```nginx
location / {
    try_files $uri $uri/ /index.html;
}

gzip on;
gzip_types text/css application/javascript;
```

---

## 📞 Suporte

Se tiver problemas, verifique:
1. O arquivo está na pasta correta?
2. O nome do arquivo é exatamente `.htaccess` (com ponto)?
3. As permissões do arquivo são 644?

```bash
# Corrigir permissões
chmod 644 .htaccess
```

---

## ✅ Checklist de instalação

- [ ] Arquivo `.htaccess` na pasta `public_html/`
- [ ] Site carrega normalmente (sem erro 500)
- [ ] Navegação entre páginas funciona
- [ ] Atualizar página (F5) não dá erro 404
- [ ] GZIP está ativo (teste com GTmetrix)
- [ ] Cache está funcionando

---

**Última atualização:** 2024
**Versão:** 1.0
