Nginx non ha .htaccess. Non è disattivato e non si può attivare: leggere un file in ogni directory a ogni richiesta è esattamente il costo che Nginx esiste per evitare. Le regole stanno nella configurazione del server e vengono lette una volta all'avvio.

Un sito arrivato da Apache si porta dietro il suo .htaccess, e il file viene semplicemente ignorato. Niente dà errore. Le regole smettono soltanto di accadere: ecco come un redirect, un divieto o una riscrittura spariscono in silenzio durante una migrazione.

Reindirizzare a https

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

Da www a senza www

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

I permalink belli di WordPress

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

Negare una directory

location ^~ /private/ {
    deny all;
}

Protezione con password

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

Intestazioni di cache sui file statici

location ~* \.(jpg|jpeg|png|webp|gif|ico|css|js|woff2)$ {
    expires 30d;
    add_header Cache-Control "public, immutable";
}
Provi prima di ricaricare, ogni volta: nginx -t. Indica file e riga di ciò che non gli piace, e un reload con una configurazione sbagliata lascia in funzione la vecchia invece di rompere il sito.