Nginx no tiene .htaccess. No está desactivado ni puede activarse: leer un archivo en cada directorio en cada petición es exactamente el coste que Nginx existe para evitar. Las reglas viven en la configuración del servidor y se leen una vez al arrancar.

Un sitio traído de Apache se lleva su .htaccess consigo, y el archivo sencillamente se ignora. Nada da error. Las reglas simplemente dejan de ocurrir: así es como una redirección, una denegación o una reescritura desaparecen en silencio durante una migración.

Redirigir a https

server {
    listen 80;
    server_name yourdomain.com;
    return 301 https://$host$request_uri;
}

De www a sin www

server {
    listen 443 ssl;
    server_name www.yourdomain.com;
    return 301 https://yourdomain.com$request_uri;
}

Los enlaces permanentes bonitos de WordPress

location / {
    try_files $uri $uri/ /index.php?$args;
}

Denegar un directorio

location ^~ /private/ {
    deny all;
}

Protección con contraseña

location /staging/ {
    auth_basic "Staging";
    auth_basic_user_file /etc/nginx/.htpasswd;
}

Cabeceras de caché en archivos estáticos

location ~* \.(jpg|jpeg|png|webp|gif|ico|css|js|woff2)$ {
    expires 30d;
    add_header Cache-Control "public, immutable";
}
Pruebe antes de recargar, siempre: nginx -t. Nombra el archivo y la línea de lo que no le gusta, y una recarga con mala configuración deja corriendo la anterior en vez de romper el sitio.