245 lines
4.9 KiB
Markdown
245 lines
4.9 KiB
Markdown
# 📁 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
|