Il rewrite engine (rewrite = riscrivere, engine = macchina) è un componente del web server che permette di riscrivere o reindirizzare gli Uniform Resource Locator (URL). Il rewrite engine più conosciuto è il mod_rewrite del server Apache HTTP, ma anche gli altri web server, come nginx o lighttpd, mettono a disposizione funzioni simili.
Questo componente software è ad esempio usato in presenza dei classici URL generati dai CMS che devono essere riscritti in URL più intuitivi e quindi più user-friendly. I motivi per cui questo processo risulta necessario sono facilmente intuibili. URL tecnici come
"http://esempio.com/a/index.php?title=titolopagina"
non sono memorizzabili facilmente dagli utenti; il rewrite engine consente di rendere accessibile la stessa risorsa parallelamente su URL chiari e semplici:
"http://esempio.com/articolo/titolopagina"
Un utente può così usare questo URL per aprire la pagina corrispondente. Se arriva una richiesta dal web server, il rewrite engine riscrive automaticamente l’URL nello schema interno utilizzato dal server, quindi come "http://esempio.com/a/index.php?title=titolopagina".
Il rewrite engine genera così una sorta di livellodi astrazione tra gli URL che utilizzano il progetto internamente e quelli che vengono visualizzati pubblicamente in rete. Ciò consente, indipendentemente dalle richieste tecniche interne, di mettere a disposizione uno schema di indirizzi unitario e user-friendly da mostrare all’esterno.
Internamente si può continuare ad utilizzare un indirizzo dinamico e che risponde a precisi parametri, mentre l’utente in rete accede al sito web tramite un indirizzo apparentemente statico. Ne consegue il vantaggio che gli URL presentati agli utenti rimangono validi, anche se vengono apportate modifiche interne alla gerarchia dei file.
I webmaster possono realizzare con il rewrite engine i reindirizzamenti in base a delle precise condizioni. Così è, ad esempio, possibile creare reindirizzamenti basati sull’identificazione dello User Agent o dell’indirizzo IP del client richiedente per impostare la localizzazione geografica o per visualizzare i siti ottimizzati su diversi dispositivi. Generalmente si utilizza un redirect 301 che assicura la memorizzazione di una sola versione del sito nell’indice dei motori di ricerca, malgrado coesistano delle pagine Mobile aggiuntive o diverse versioni in più lingue.
I webmaster dovrebbero invece prendere le distanze dalle pratiche di cloaking, in cui vengono visualizzate pagine specificamente ottimizzate per i crawler dei motori di ricerca al solo scopo di migliorarne il ranking.