Che cos'è il file .htaccess e come lo usi in WordPress?
Pubblicato: 2020-10-27Potresti aver sentito parlare del file .htaccess prima ma non hai la più pallida idea di cosa sia o cosa faccia. In questo articolo punteremo i riflettori sul file .htaccess e sveleremo i suoi misteri una volta per tutte. Alla fine di questo articolo capirai che il file .htaccess è, cosa fa il file .htaccess e come puoi usare il file .htaccess per ottenere determinati compiti. Muoviamoci!
Cos'è il file .htaccess?
Iniziamo osservando esattamente cos'è un file .htaccess. 'htaccess' sta per 'accesso ipertestuale'. Questo nome descrive per cosa è stato utilizzato il file quando è stato sviluppato per la prima volta. In breve, è stato utilizzato per controllare l'accesso degli utenti a determinati file e directory. Le cose sono andate avanti da quando .htaccess è apparso per la prima volta sulla scena e ora è utilizzato in diversi modi in WordPress che esamineremo in dettaglio.
Il .htaccess è un file core di WordPress di configurazione che viene utilizzato per sovrascrivere impostazioni specifiche del server Web Apache (Apache è un software comunemente utilizzato sui server Web) o per implementare varie altre funzioni che influiscono sul funzionamento del tuo sito Web. È incluso in tutte le installazioni di WordPress subito dopo aver abilitato i permalink e di solito si trova nella directory principale dell'installazione. Puoi vederlo o modificarlo accedendo ai file di installazione tramite un client FTP come FileZilla o WinSCP.
Nota: assicurati che le preferenze del tuo client FTP siano modificate in modo che i file nascosti vengano mostrati.
Per impostazione predefinita, il contenuto di un file .htaccess di un sito Web WordPress, una volta abilitati i permalink, si presenta così:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
Nel caso non ne fossi già a conoscenza, il "#" all'inizio di una riga è un commento. # BEGIN WordPress
e # END WordPress
vengono utilizzate in modo che il contenuto rimanga organizzato quando più regole vengono applicate in seguito dai plug-in o da te stesso. Qualsiasi aggiunta futura al file .htaccess dovrebbe essere collocata al di fuori di queste righe.
Il file .htaccess viene utilizzato principalmente in WordPress per controllare i permalink sul tuo sito web. Può anche essere utilizzato come potente strumento per varie altre attività, come il controllo dell'accesso a determinati file, il miglioramento della sicurezza e delle prestazioni, l'invio di intestazioni personalizzate e molto altro.
Nota: è importante che tutte le modifiche apportate al file .htaccess del tuo sito web siano eseguite con attenzione. Anche un semplice errore di battitura in questo file potrebbe causare il crash del tuo sito web. Pertanto, se non sei sicuro delle modifiche che stai apportando, dovresti testarle idealmente su un server di staging prima di applicare al tuo sito Web live.
Cose che puoi fare con il tuo file .htaccess
Vediamo quindi come puoi assumere un maggiore controllo del tuo sito web con l'aiuto del file .htaccess.
Reindirizzamento tra 'www' e 'non www'
Un uso comune del file .htaccess è impostare un reindirizzamento permanente dal tuo "dominio nudo" (versione non www) alla sua versione www o viceversa.
Prima di procedere, assicurati che entrambi i domini siano impostati nel tuo DNS per risolvere l'indirizzo IP del server corretto.
Inoltre, nella tua area di amministrazione di WordPress, controlla se il dominio naked è impostato come primario.
Puoi reindirizzare il dominio www a quello naked aggiungendo il seguente codice nel file .htaccess, sotto il contenuto predefinito.
RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.mycompanyname\.com [NC] RewriteRule ^(.*)$ http://mycompanyname.com/$1 [L,R=301]
Per ottenere l'esatto contrario (se www è impostato come primario) e reindirizzare da un dominio "non www" a "www" è necessario inserire questo codice:
RewriteEngine on RewriteCond %{HTTP_HOST} ^mycompanyname.com [NC] RewriteRule ^(.*)$ http://www.mycompanyname.com/$1 [R=301,L]
Se non hai familiarità con le espressioni regolari utilizzate nel codice e vorresti saperne di più sulla sintassi, sentiti libero di prenderti il tuo tempo e leggere di più su REGEX. HT Access Cheat Sheet è un altro strumento molto utile
Reindirizzamento 301 (reindirizzamento permanente)
Un reindirizzamento 301 dice ai motori di ricerca che un URL è stato sostituito in modo permanente con un altro e reindirizza anche un utente a quel visitatore a un nuovo URL (corretto!). .
Ecco il pezzo di codice che, se inserito in un file .htaccess, fa il trucco:
RewriteEngine on RewriteCond %{HTTP_HOST} ^mycompanyname.com [NC,OR] RewriteCond %{HTTP_HOST} ^www.mycompanyname.com [NC] RewriteRule ^(.*)$ http://example.com/$1 [L,R=301,NC]
Nell'esempio sopra abbiamo reindirizzato gli utenti dal sito web 'nomeazienda.com a 'esempio.com'. Ovviamente, vorrai sostituire queste sezioni con i tuoi URL.
Ciò si applicherà anche a tutti i percorsi del dominio. Ciò significa che, ad esempio, mycompanyname.com/new.html reindirizzerà a example.com/new.html
302 Reindirizzamento (reindirizzamento temporaneo)
Quando un contenuto viene temporaneamente spostato in un'altra posizione, viene utilizzato un reindirizzamento 302. La sintassi è la stessa di 301. Ad esempio:
Redirect 302 /old.html http//www.mycompanyname.com/new.html
Da un punto di vista pratico il risultato è esattamente lo stesso ma con una differenza importante. Con un reindirizzamento 301, ai motori di ricerca viene detto che la pagina non è più attiva e, così facendo, incoraggerà i motori di ricerca a eliminare questa pagina dai risultati di ricerca. Nel caso di un reindirizzamento 302, l'URL originale verrà comunque scansionato da Google che continuerà a indicizzare invece del nuovo URL. In quanto tale, è la soluzione ideale per un reindirizzamento quando si desidera reindirizzare solo temporaneamente a contenuti alternativi.
Forza a HTTPS
Proteggere il tuo sito web con un certificato SSL è molto importante da fare in questi giorni. I siti Web che non lo fanno ora visualizzeranno un avviso nella barra del browser che può minare la fiducia nel tuo sito Web. Inoltre, Google in realtà penalizza i siti Web che non forniscono contenuti tramite HTTPS e, di conseguenza, le tue classifiche di ricerca potrebbero risentirne.
Anche quando installi un certificato SSL sul tuo sito web, potresti comunque scoprire che gli utenti possono visitare la versione non HTTPS del tuo sito. Se lo fanno, riceveranno comunque l'avviso nel loro browser nonostante il fatto che tu abbia installato un certificato SSL. Per evitare che ciò accada, devi forzare tutto il traffico dalla versione HTTP non sicura alla versione HTTPS sicura. Questo è semplicissimo da fare usando il tuo file .htaccess aggiungendo il seguente codice:
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Blocca indirizzi IP
Se stai ricevendo traffico di spam o il tuo sito web subisce tentativi di abuso/hacking da parte di determinati indirizzi IP, puoi agire utilizzando il tuo file .htaccess bloccando il traffico da quell'indirizzo IP utilizzando il codice seguente nel tuo file .htaccess.
Deny from 94.66.58.135
Se vuoi sapere come bloccare un indirizzo IP in altri modi, leggi questa guida.
Impedisci il collegamento rapido delle immagini
L'hotlinking di immagini è il modo in cui qualcuno incorpora un'immagine sul tuo sito Web nella propria. Questo può essere problematico (e non solo dal punto di vista del copyright) in quanto significa che il tuo server deve potenzialmente fare gli straordinari per pubblicare immagini sul sito Web di qualcun altro. Puoi impedirlo utilizzando il file .htaccess per impedire a qualcuno di incorporare le tue immagini nel proprio sito Web con il seguente codice:
RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mycompanyname.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yahoo.com [NC] RewriteRule \.(jpg|jpeg|png|gif)$ - [F]
Non dimenticare di sostituire 'mycompanyname.com' con l'URL del tuo sito web!
Questo codice blocca TUTTI i siti Web dal collegamento di immagini sul tuo sito. Poiché non vuoi impedire ai motori di ricerca di collegare le immagini, dovrai inserirle manualmente nella whitelist. La sezione del codice che ottiene questo risultato è questa parte qui:
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mycompanyname.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yahoo.com [NC]
Ovviamente puoi includere qualsiasi altro sito web che desideri inserire nella whitelist. Infine, l'ultima riga del codice ( RewriteRule .(jpg|jpeg|png|gif)$ - [F]
) determina quali tipi di media sono bloccati.
Proteggi i file di plugin e temi
I file PHP di plugin e temi a volte possono essere l'obiettivo di hacker che cercano di iniettarvi codice dannoso. Puoi utilizzare il tuo file .htaccess per impedire l'accesso a questi file utilizzando il seguente codice:
RewriteCond %{REQUEST_URI} !^/wp-content/plugins/file/to/exclude\.php RewriteCond %{REQUEST_URI} !^/wp-content/plugins/directory/to/exclude/ RewriteRule wp-content/plugins/(.*\.php)$ - [R=404,L] RewriteCond %{REQUEST_URI} !^/wp-content/themes/file/to/exclude\.php RewriteCond %{REQUEST_URI} !^/wp-content/themes/directory/to/exclude/ RewriteRule wp-content/themes/(.*\.php)$ - [R=404,L]
Proteggi i file core di WordPress
Si consiglia vivamente di rendere inaccessibili alcuni file core di WordPress agli utenti non amministratori. Questo è qualcosa di cui la maggior parte dei provider di hosting si prende cura, ma non è sempre così. Se desideri impedire l'accesso a file WordPress sensibili, puoi utilizzare il seguente codice nel tuo file .htaccess:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^wp-admin/includes/ - [F,L] RewriteRule !^wp-includes/ - [S=3] RewriteRule ^wp-includes/[^/]+\.php$ - [F,L] RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L] RewriteRule ^wp-includes/theme-compat/ - [F,L] </IfModule>
Impedisci ai robot dannosi di eseguire la scansione del tuo sito web
I bot sono fondamentalmente script web automatizzati in grado di scansionare milioni di siti web al giorno. Google utilizza i bot per scansionare i siti Web e prende i dati da queste scansioni per aggiornare i loro enormi database di ricerca. Si spera che un bot di Google sia del tutto innocuo! Ci sono altri bot che potresti non voler scansionare il tuo sito web. Alcuni di questi bot "cattivi" potrebbero non fare altro che consumare larghezza di banda del server non necessaria, mentre altri potrebbero essere attivamente alla ricerca di punti deboli sfruttabili nel tuo sito web. Il tuo file .htaccess può essere utilizzato per bloccare questi bot "cattivi".
La prima cosa da scoprire è quali bot vuoi bloccare? Potresti già saperlo, ma in caso contrario, potresti controllare un elenco aggiornato di bot nella lista nera che sono considerati sospetti. Quando hai la tua lista puoi aggiungerli al tuo file .htaccess in questo modo:
#Block bad bods requests SetEnvIfNoCase user-Agent ^FrontPage [NC,OR] SetEnvIfNoCase user-Agent ^Java.* [NC,OR] SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR] SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR] SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR] SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR] SetEnvIfNoCase user-Agent ^Zeus [NC]
Dopo aver salvato le modifiche, tutti i bot nell'elenco che ora visitano il tuo sito Web riceveranno una pagina 403 Proibita.
Proteggi wp-config.php
In genere si consiglia di limitare l'accesso al file wp-config.php poiché contiene le credenziali di accesso al database.
Per farlo tramite .htaccess, copia e incolla semplicemente le seguenti righe nel tuo file .htaccess:
<files wp-config.php>order allow,denydeny from all</files>
Disabilita l'esecuzione di PHP
Un modo molto efficiente per proteggersi dai tentativi di hacking è impedire l'esecuzione di PHP in directory specifiche dove non è necessario. Ad esempio, le directory /wp-includes/
e /wp-content/uploads/
sono posizioni popolari utilizzate dagli hacker per inserire codice che consente l'accesso non autorizzato al server (noti come file backdoor). La disabilitazione dell'esecuzione di PHP in queste directory non cancellerà quei file ma interromperà invece l'esecuzione del loro codice. Per fare ciò, aggiungi il seguente codice al tuo file .htaccess.
<Files *.php>deny from all</Files>
Scoprirai anche che molti provider di hosting, incluso Pressidium, hanno già disabilitato per impostazione predefinita l'esecuzione di PHP in queste directory per migliorare il loro livello di sicurezza per i loro clienti.
Disabilita l'accesso XML-RPC
È un problema comune spesso riscontrato dai team di supporto delle società di hosting in cui un'installazione di WordPress riceve migliaia di richieste "POST /xmlrpc.php HTTP/1.1" che sono spesso correlate a un attacco da uno o più indirizzi IP. Una soluzione a questo è disabilitare XML-RPC.
Per disabilitare XML-RPC per il tuo sito web aggiungi queste righe di codice al tuo file .htaccess:
# Block WordPress xmlrpc.php requests <Files xmlrpc.php> order deny,allow deny from all </Files> # END protect xmlrpc.php
Vale la pena notare che xmlrpc.php è necessario se stai aggiornando i tuoi contenuti utilizzando app mobili o connessioni remote. Quindi, se stai pensando di disabilitarlo in modo permanente, assicurati che non sia necessario per il tuo lavoro.
Forza il download dei file
Può essere estremamente fastidioso come utente di un sito Web che, quando si desidera scaricare un file da un sito Web (ad esempio un PDF), il file si apre invece nella finestra del browser. Se sul tuo sito web sono presenti file che vengono forniti come elementi scaricabili per i tuoi utenti, puoi modificare il tuo file .htaccess e aggiungere una riga di codice che può forzare il download di determinati tipi di file e non la visualizzazione direttamente dal browser. Di seguito vedrai questo codice insieme ad alcuni esempi di tipi di file che vorresti che gli utenti potessero scaricare direttamente.
AddType application/octet-stream .avi .mpg .mov .pdf .xls .mp4
Invia intestazioni HTTP personalizzate
Gli utenti avanzati potrebbero voler inviare le intestazioni HTTP dei clienti sfruttando la direttiva Header di Apache. Per fare ciò, aggiungi il seguente codice al tuo file .htaccess.
Header add my-custom-header "my custom header value"
L'esempio sopra direbbe ad Apache di aggiungere un'intestazione denominata "my-custom-header" per ogni richiesta al server. Se implementiamo questo aggiornamento e quindi controlliamo la nostra scheda di rete negli strumenti del nostro browser, possiamo confermare la sua risposta come mostrato di seguito.
Questa tecnica è molto comune per aggiungere cache e intestazioni di sicurezza o per aggiungere un set di caratteri della lingua. Dai un'occhiata a questo articolo per alcuni usi popolari. In questo elenco puoi anche trovare un elenco dettagliato di intestazioni su cui sperimentare.
Conclusione
Speriamo che questo articolo ti abbia dato alcune informazioni sulle cose che possono essere ottenute con il file .htaccess. Certo, molte di queste cose possono essere realizzate utilizzando un plug-in, ma è sempre utile capire cosa sta succedendo esattamente "sotto il cofano", specialmente se un plug-in non funziona nel modo previsto. Padroneggiare come modificare il file .htaccess piuttosto che fare affidamento su un plug-in aiuta anche a migliorare i tuoi livelli di esperienza in WordPress... ed è sempre una buona cosa!