Passa al contenuto principale

Esempi di file .htaccess per CMS popolari: come ripristinare il file predefinito

· 11 minuti di lettura
Customer Care Engineer

Esempi di file .htaccess predefiniti per WordPress, Joomla, Drupal e altri CMS con snippet di codice

Il file .htaccess è un file di configurazione utilizzato sui server web Apache per gestire le impostazioni del sito web senza accesso alla configurazione principale del server. Con esso, puoi abilitare reindirizzamenti, limitare l'accesso, configurare URL SEO-friendly, impostare la cache e molto altro, direttamente dalla directory principale del tuo sito o da una delle sue sottodirectory.

Molti CMS creano automaticamente questo file all'installazione o includono un esempio nella distribuzione.

Se stai lavorando con l'hosting, in particolare su Apache, è importante sapere come si presenta il file .htaccess predefinito per i diversi CMS. Questo ti aiuta a:

  • Verificare che tutto sia corretto dopo l'installazione;

  • Ripristinare il file se è stato accidentalmente eliminato;

  • Comprendere quali regole il sistema utilizza "out of the box".


Dove si trova .htaccess

Il file .htaccess si trova solitamente nella cartella principale del sito, ad esempio:

"/var/www/site.com/public_html/.htaccess"

Se il file manca (ad esempio, è stato accidentalmente eliminato), puoi crearlo manualmente con il nome .htaccess (il nome inizia con un punto, nessuna estensione).

Apri il file con un editor di testo (ad esempio, Notepad++ o VS Code).

warning

Non utilizzare suite per ufficio (come MS Word) per l'editing, poiché potrebbero inserire caratteri nascosti che corrompono il file.

Di seguito è riportata una raccolta di file .htaccess standard utilizzati per impostazione predefinita nei CMS più diffusi. Questi esempi possono tornare utili se hai accidentalmente eliminato o corrotto il file .htaccess originale e devi ripristinarlo per far funzionare correttamente il tuo sito.


WordPress

Il file .htaccess predefinito per WordPress abilita gli URL "puliti" e include regole di reindirizzamento di base:

# 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

Se viene utilizzato un multisito con sottodomini (ad esempio, site1.example.com, site2.example.com):

# BEGIN WordPress Multisite

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /

RewriteRule ^index\.php$ - [L]



# Redirect per multisite (sottodomini)

RewriteCond %{REQUEST_FILENAME} -f [OR]

RewriteCond %{REQUEST_FILENAME} -d

RewriteRule ^ - [L]

RewriteRule ^(wp-(content|admin|includes).*) $1 [L]

RewriteRule ^(.*\.php)$ $1 [L]

RewriteRule . index.php [L]

</IfModule>

# END WordPress Multisite

Se viene utilizzato un multisito con sottodirectory (ad esempio, example.com/site1, example.com/site2):

# BEGIN WordPress Multisite

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /

RewriteRule ^index\.php$ - [L]



# Redirect per multisite (sottodirectory)

RewriteCond %{REQUEST_FILENAME} -f [OR]

RewriteCond %{REQUEST_FILENAME} -d

RewriteRule ^ - [L]

RewriteRule . index.php [L]

</IfModule>

# END WordPress Multisite

Joomla 2.5-3

Joomla utilizza .htaccess per la protezione di base e la configurazione SEF:

##

# @package Joomla

# @copyright Copyright (C) 2005 - 2012 Open Source Matters. All rights reserved.

# @license GNU General Public License version 2 or later; see LICENSE.txt

##



##

# LEGGI QUESTO COMPLETAMENTE SE SCEgli di utilizzare questo file!

#

# La riga appena sotto questa sezione: 'Options +FollowSymLinks' potrebbe causare problemi

# con alcune configurazioni del server. È richiesta per l'uso di mod_rewrite, ma potrebbe essere già

# impostata dal tuo amministratore di server in modo da non consentirne la modifica nel

# tuo file .htaccess. Se il suo utilizzo causa errori nel server, commentala (aggiungi # all'inizio

# della riga), ricarica il tuo sito nel browser e testa i tuoi URL SEF. Se funzionano,

# è stata impostata dal tuo amministratore di server e non hai bisogno di impostarla qui.

##



## Può essere commentata se causa errori, vedi note sopra.

Options +FollowSymLinks



## Mod_rewrite in uso.



RewriteEngine On



## Inizio - Regole di riscrittura per bloccare alcune exploit comuni.

# Se riscontri problemi sul tuo sito, blocca le operazioni elencate sotto

# Questo tenta di bloccare il tipo più comune di tentativi di exploit su Joomla!

#

# Blocca qualsiasi script che tenti di codificare in base64 dati all'interno dell'URL.

RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]

# Blocca qualsiasi script che includa un tag <script> nell'URL.

RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]

# Blocca qualsiasi script che tenti di impostare una variabile PHP GLOBALS tramite URL.

RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]

# Blocca qualsiasi script che tenti di modificare una variabile _REQUEST tramite URL.

RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})

# Restituisce un header 403 Forbidden e mostra il contenuto della homepage principale

RewriteRule .* index.php [F]

#

## Fine - Regole di riscrittura per bloccare alcune exploit comuni.



## Inizio - Reindirizzamenti personalizzati

#

# Se hai bisogno di reindirizzare alcune pagine, o impostare un reindirizzamento canonico da non-www a

# www (o viceversa), inserisci il codice qui. Assicurati che questi

# reindirizzamenti utilizzino la sintassi RewriteRule corretta e i flag [R=301,L].

#

## Fine - Reindirizzamenti personalizzati



##

# Decommenta la riga seguente se l'URL del tuo webserver

# non è direttamente correlato ai percorsi fisici dei file.

# Aggiorna la tua directory Joomla! (solo / per la root).

##



# RewriteBase /



## Inizio - Sezione SEF principale di Joomla!.

#

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

#

# Se il percorso richiesto e il file non sono /index.php e la richiesta

# non è già stata internamente riscritta allo script index.php

RewriteCond %{REQUEST_URI} !^/index\.php

# e la richiesta è per qualcosa all'interno della cartella del componente,

# o per la root del sito, o per un URL senza estensione, o l'URL richiesto

# termina con una delle estensioni elencate

RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw))$ [NC]

# e il percorso e il file richiesti non corrispondono direttamente a un file fisico

RewriteCond %{REQUEST_FILENAME} !-f

# e il percorso e il file richiesti non corrispondono direttamente a una cartella fisica

RewriteCond %{REQUEST_FILENAME} !-d

# riscrive internamente la richiesta allo script index.php

RewriteRule .* index.php [L]

#

## Fine - Sezione SEF principale di Joomla!.

Joomla 4-5

In Joomla 4 viene prestata maggiore attenzione alla sicurezza e alla cache:

##

# @package    Joomla

# @copyright  (C) 2005 Open Source Matters, Inc. <https://www.joomla.org>

# @license    GNU General Public License version 2 or later; see LICENSE.txt

##



##

# LEGGI QUESTO COMPLETAMENTE SE SCEgli di utilizzare questo file!

#

# La riga 'Options +FollowSymLinks' potrebbe causare problemi con alcune configurazioni del server.

# È richiesta per l'uso di Apache mod_rewrite, ma potrebbe essere già stata impostata da

# il tuo amministratore di server in modo da non consentirne la modifica in questo file .htaccess.

# Se il suo utilizzo causa un errore al tuo sito, commentala (aggiungi # all'inizio della riga),

# ricarica il tuo sito nel browser e testa i tuoi URL SEF. Se funzionano,

# è stata impostata dal tuo amministratore di server e non è necessario impostarla qui.

##



## ERRORI CSS O JAVASCRIPT MANCANTI

#

# Se il tuo sito appare strano dopo aver abilitato questo file, allora il tuo server probabilmente sta già

# comprimendo i file CSS e JS e dovresti commentare la sezione GZIP di questo file.

##



## OPENLITESPEED

#

# Se stai usando un server web OpenLiteSpeed, qualsiasi modifica apportata a questo file non

# avrà effetto finché non avrai riavviato il server web.

##



## Può essere commentata se causa errori, vedi note sopra.

Options +FollowSymlinks

Options -Indexes



## Nessuna directory listing

<IfModule mod_autoindex.c>

IndexIgnore *

</IfModule>



## Sopprimi il rilevamento dei tipi MIME nei browser per i tipi sconosciuti

<IfModule mod_headers.c>

Header always set X-Content-Type-Options "nosniff"

</IfModule>



## Proteggi contro alcune richieste cross-origin. Maggiori informazioni si trovano qui:

## https://developer.mozilla.org/en-US/docs/Web/HTTP/Cross-Origin_Resource_Policy_(CORP)

## https://web.dev/why-coop-coep/

#<IfModule mod_headers.c>

# Header always set Cross-Origin-Resource-Policy "same-origin"

# Header always set Cross-Origin-Embedder-Policy "require-corp"

#</IfModule>



## Disabilita JavaScript inline quando si aprono direttamente file SVG o li si incorpora con il tag object

<FilesMatch "\.svg$">

  <IfModule mod_headers.c>

    Header always set Content-Security-Policy "script-src 'none'"

  </IfModule>

</FilesMatch>



## Queste direttive sono abilitate solo se il modulo Apache mod_rewrite è abilitato

<IfModule mod_rewrite.c>

RewriteEngine On



## Inizio - Regole di riscrittura per bloccare alcune exploit comuni.

# Se riscontri problemi sul tuo sito, commenta le operazioni elencate

# sotto aggiungendo un # all'inizio della riga.

# Questo tenta di bloccare il tipo più comune di exploit `attempts` su Joomla!

#

# Blocca qualsiasi script che tenti di codificare in base64 dati all'interno dell'URL.

RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]

# Blocca qualsiasi script che includa un tag <script> nell'URL.

RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]

# Blocca qualsiasi script che tenti di impostare una variabile PHP GLOBALS tramite URL.

RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]

# Blocca qualsiasi script che tenti di modificare una variabile _REQUEST tramite URL.

RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})

# Restituisce un header 403 Forbidden e mostra il contenuto della homepage principale

RewriteRule .* index.php [F]

#

## Fine - Regole di riscrittura per bloccare alcune exploit comuni.



## Inizio - Reindirizzamenti personalizzati

#

# Se hai bisogno di reindirizzare alcune pagine, o impostare un reindirizzamento canonico da non-www a

# www (o viceversa), inserisci il codice qui. Assicurati che questi

# reindirizzamenti utilizzino la sintassi RewriteRule corretta e i flag [R=301,L].

#

## Fine - Reindirizzamenti personalizzati



##

# Decommenta la riga seguente se l'URL del tuo webserver

# non è direttamente correlato ai percorsi fisici dei file.

# Aggiorna la tua directory Joomla! (solo / per la root).

##



# RewriteBase /



## Inizio - Sezione SEF principale di Joomla!.

#

# Correzione PHP FastCGI per l'autorizzazione HTTP, necessaria per l'applicazione API

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

# -- URL SEF per l'applicazione API

# Se il percorso richiesto inizia con /api, il file non è /api/index.php

# e la richiesta non è già stata riscritta internamente allo

# script api/index.php

RewriteCond %{REQUEST_URI} ^/api/

RewriteCond %{REQUEST_URI} !^/api/index\.php

# e il percorso e il file richiesti non corrispondono direttamente a un file fisico

RewriteCond %{REQUEST_FILENAME} !-f

# e il percorso e il file richiesti non corrispondono direttamente a una cartella fisica

RewriteCond %{REQUEST_FILENAME} !-d

# riscrive internamente la richiesta allo script /api/index.php

RewriteRule .* api/index.php [L]

# -- URL SEF per l'applicazione frontend pubblica

# Se il percorso e il file richiesti non sono /index.php e la richiesta

# non è già stata riscritta internamente allo script index.php

RewriteCond %{REQUEST_URI} !^/index\.php

# e il percorso e il file richiesti non corrispondono direttamente a un file fisico

RewriteCond %{REQUEST_FILENAME} !-f

# e il percorso e il file richiesti non corrispondono direttamente a una cartella fisica

RewriteCond %{REQUEST_FILENAME} !-d

# riscrive internamente la richiesta allo script index.php

RewriteRule .* index.php [L]

#

## Fine - Sezione SEF principale di Joomla!.

</IfModule>



## Queste direttive sono abilitate solo se il modulo Apache mod_rewrite è disabilitato

<IfModule !mod_rewrite.c>

<IfModule mod_alias.c>

# Quando il modulo Apache mod_rewrite non è disponibile, istruiamo un reindirizzamento temporaneo

# della pagina iniziale al controller frontale esplicitamente in modo che il sito web

# e i link generati possano ancora essere utilizzati.

RedirectMatch 302 ^/$ /index.php/

# RedirectTemp non può essere utilizzato al posto di questo

</IfModule>

</IfModule>



## GZIP

## Queste direttive sono abilitate solo se il modulo Apache mod_headers è abilitato.

## Questa sezione controllerà se esiste un file .gz e in tal caso lo trasmetterà

## direttamente o comprimerà qualsiasi asset al volo

## Se il tuo sito inizia ad apparire strano dopo aver abilitato questo file, e vedi

## ERR_CONTENT_DECODING_FAILED nella scheda di rete della console del tuo browser,

## allora il tuo server sta già comprimendo i file CSS e JS e non hai bisogno di questo

## blocco abilitato nel tuo .htaccess

<IfModule mod_headers.c>

# Serve file CSS compressi gzip se esistono

# e il client accetta gzip.

RewriteCond "%{HTTP:Accept-encoding}" "gzip"

RewriteCond "%{REQUEST_FILENAME}\.gz" -s

RewriteRule "^(.*)\.css" "$1\.css\.gz" [QSA]



# Serve file JS compressi gzip se esistono

# e il client accetta gzip.

RewriteCond "%{HTTP:Accept-encoding}" "gzip"

RewriteCond "%{REQUEST_FILENAME}\.gz" -s

RewriteRule "^(.*)\.js" "$1\.js\.gz" [QSA]



# Serve i tipi di contenuto corretti, ed evita la doppia compressione gzip di mod_deflate.

RewriteRule "\.css\.gz$" "-" [T=text/css,E=no-gzip:1]

RewriteRule "\.js\.gz$" "-" [T=text/javascript,E=no-gzip:1]



<FilesMatch "(\.js\.gz|\.css\.gz)$">

# Serve il tipo di codifica corretto.

Header set Content-Encoding gzip



# Forza i proxy a memorizzare nella cache i file CSS/JS compressi e

# non compressi separatamente.

Header append Vary Accept-Encoding

</FilesMatch>

</IfModule>

Drupal 7

Il file .htaccess in Drupal 7 include impostazioni di sicurezza e ottimizzazione di base. Contenuto tipico:

# Impedisci firme del server e navigazione delle directory

ServerSignature Off

Options -Indexes



# Proteggi file sensibili

<FilesMatch "\.(htaccess|htpasswd)">

  Order Allow,Deny

  Deny from all

</FilesMatch>



# Proteggi file dall'accesso diretto

<FilesMatch "\.(txt|md|yml|json|xml)$">

  Order Allow,Deny

  Deny from all

</FilesMatch>



# Imposta un fuso orario predefinito per PHP

SetEnv TZ Europe/Amsterdam



# Abilita la compressione per migliori prestazioni

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript text/javascript application/javascript



# Impostazioni di cache per migliori prestazioni

<IfModule mod_headers.c>

  Header set Cache-Control "public, max-age=3600"

</IfModule>

Drupal 8

Per Drupal 8, .htaccess include già miglioramenti aggiuntivi e supporta nuove funzionalità. Ad esempio, c'è il supporto HTTP/2, sicurezza migliorata, personalizzazione per gestire URL puliti e caching.

# Impedisci la navigazione delle directory e le firme del server

ServerSignature Off

Options -Indexes



# Proteggi file sensibili

<FilesMatch "\.(htaccess|htpasswd|ini|log|conf)$">

  Order Allow,Deny

  Deny from all

</FilesMatch>



# Supporto per URL puliti

RewriteEngine on

RewriteBase /



# Supporto per HTTP/2

<IfModule http2_module>

  Protocols h2 http/1.1

</IfModule>



# Controllo cache per gli asset

<IfModule mod_headers.c>

  Header set Cache-Control "public, max-age=86400, s-maxage=86400, must-revalidate"

</IfModule>



# Abilita la compressione

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript application/javascript text/javascript



# Reindirizza slash finali per URL puliti

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_URI} /+$

RewriteRule ^(.*)/$ /$1 [R=301,L]

Drupal 9

Per Drupal 9, .htaccess include ulteriori miglioramenti per lavorare con tecnologie web più recenti come il supporto HTTP/2 e misure di sicurezza più rigorose.

# Impedisci la navigazione delle directory e le firme del server

ServerSignature Off

Options -Indexes



# Proteggi file sensibili

<FilesMatch "\.(htaccess|htpasswd|ini|log|conf)$">

  Order Allow,Deny

  Deny from all

</FilesMatch>



# Abilita URL puliti (questo è essenziale per il corretto funzionamento di Drupal)

RewriteEngine on

RewriteBase /



# Supporto per HTTP/2 e caching moderno

<IfModule mod_http2.c>

  Protocols h2 http/1.1

</IfModule>



<IfModule mod_headers.c>

  Header set Cache-Control "public, max-age=86400, s-maxage=86400, must-revalidate"

</IfModule>



# Abilita compressione Gzip

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript text/javascript application/javascript



# Supporto URL puliti per Drupal

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_URI} /+$

RewriteRule ^(.*)/$ /$1 [R=301,L]

OpenCart

Options +FollowSymlinks

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

Magento (2.x)

Magento ha un file .htaccess complesso che include regole per compressione, caching e sicurezza. Esempio per Magento 2:

<IfModule mod_php5.c>

php_flag memory_limit 756M

php_flag max_execution_time 18000

</IfModule>



<IfModule mod_rewrite.c>

Options +FollowSymLinks

RewriteEngine on



RewriteCond %{REQUEST_URI} !^/pub/

RewriteRule ^(.*)$ pub/$1 [L]

</IfModule>

PrestaShop (1.7.x)

PrestaShop genera automaticamente il file .htaccess durante l'installazione o quando si modificano le impostazioni degli URL SEO-friendly.

# ~~start~~ Non rimuovere questo commento, Prestashop manterrà automaticamente il codice al di fuori di questo commento quando .htaccess verrà generato di nuovo

# .htaccess generato automaticamente dalla soluzione e-commerce open-source PrestaShop

# http://www.prestashop.com - http://www.prestashop.com/forums



<IfModule mod_rewrite.c>

<IfModule mod_env.c>

     SetEnv HTTP_MOD_REWRITE On

</IfModule>



RewriteEngine on



# Dominio: www.example.com

RewriteRule . - [E=REWRITEBASE:/]



# API

RewriteRule ^api$ api/ [L]

RewriteRule ^api/(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]



# Immagini

RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L]

RewriteRule ^([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.jpg [L]

RewriteRule ^([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$1$2$3$4$5.jpg [L]

RewriteRule ^([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg [L]

RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg [L]

RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg [L]

RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg [L]

RewriteRule ^c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2$3.jpg [L]

RewriteRule ^c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2.jpg [L]



# AlphaImageLoader per IE e fancybox

RewriteRule ^images_ie/?([^/]+)\.(jpe?g|png|gif)$ js/jquery/plugins/fancybox/images/$1.$2 [L]



# Dispatcher

RewriteCond %{REQUEST_FILENAME} -s [OR]

RewriteCond %{REQUEST_FILENAME} -l [OR]

RewriteCond %{REQUEST_FILENAME} -d

RewriteRule ^.*$ - [NC,L]

RewriteRule ^.*$ %{ENV:REWRITEBASE}index.php [NC,L]

</IfModule>



<IfModule mod_headers.c>

<FilesMatch "\.(ttf|ttc|otf|eot|woff|woff2|svg)$">

    Header set Access-Control-Allow-Origin "*"

</FilesMatch>

</IfModule>



<IfModule mod_expires.c>

ExpiresActive On

ExpiresByType image/gif "access plus 1 month"

ExpiresByType image/jpeg "access plus 1 month"

ExpiresByType image/png "access plus 1 month"

ExpiresByType text/css "access plus 1 week"

ExpiresByType text/javascript "access plus 1 week"

ExpiresByType application/javascript "access plus 1 week"

ExpiresByType application/x-javascript "access plus 1 week"

ExpiresByType image/x-icon "access plus 1 year"

ExpiresByType image/svg+xml "access plus 1 year"

ExpiresByType image/vnd.microsoft.icon "access plus 1 year"

ExpiresByType application/font-woff "access plus 1 year"

ExpiresByType application/x-font-woff "access plus 1 year"

ExpiresByType font/woff2 "access plus 1 year"

ExpiresByType application/vnd.ms-fontobject "access plus 1 year"

ExpiresByType font/opentype "access plus 1 year"

ExpiresByType font/ttf "access plus 1 year"

ExpiresByType font/otf "access plus 1 year"

ExpiresByType application/x-font-ttf "access plus 1 year"

ExpiresByType application/x-font-otf "access plus 1 year"

</IfModule>



<IfModule mod_headers.c>

Header unset Etag

</IfModule>

FileETag none



<IfModule mod_deflate.c>

<IfModule mod_filter.c>

     AddOutputFilterByType DEFLATE text/html text/css text/javascript application/javascript application/x-javascript font/ttf application/x-font-ttf font/otf application/x-font-otf font/opentype image/svg+xml

</IfModule>

</IfModule>



# Se il mod rewrite non è abilitato

ErrorDocument 404 /index.php?controller=404



# ~~start~~ Non rimuovere questo commento, Prestashop manterrà automaticamente il codice al di fuori di questo commento quando .htaccess verrà generato di nuovo

# .htaccess generato automaticamente dalla soluzione e-commerce open-source PrestaShop

# http://www.prestashop.com - http://www.prestashop.com/forums



<IfModule mod_rewrite.c>

<IfModule mod_env.c>

     SetEnv HTTP_MOD_REWRITE On

</IfModule>



RewriteEngine on



# Dominio: www.example.com

RewriteRule . - [E=REWRITEBASE:/]



# API

RewriteRule ^api$ api/ [L]

RewriteRule ^api/(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]



# Immagini

RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L]

RewriteRule ^([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.jpg [L]

RewriteRule ^([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$1$2$3$4$5.jpg [L]

RewriteRule ^([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg [L]

RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg [L]

RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg [L]

RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg [L]

RewriteRule ^c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2$3.jpg [L]

RewriteRule ^c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2.jpg [L]



# AlphaImageLoader per IE e fancybox

RewriteRule ^images_ie/?([^/]+)\.(jpe?g|png|gif)$ js/jquery/plugins/fancybox/images/$1.$2 [L]



# Dispatcher

RewriteCond %{REQUEST_FILENAME} -s [OR]

RewriteCond %{REQUEST_FILENAME} -l [OR]

RewriteCond %{REQUEST_FILENAME} -d

RewriteRule ^.*$ - [NC,L]

RewriteRule ^.*$ %{ENV:REWRITEBASE}index.php [NC,L]

</IfModule>



<IfModule mod_headers.c>

<FilesMatch "\.(ttf|ttc|otf|eot|woff|woff2|svg)$">

    Header set Access-Control-Allow-Origin "*"

</FilesMatch>

</IfModule>



<IfModule mod_expires.c>

ExpiresActive On

ExpiresByType image/gif "access plus 1 month"

ExpiresByType image/jpeg "access plus 1 month"

ExpiresByType image/png "access plus 1 month"

ExpiresByType text/css "access plus 1 week"

ExpiresByType text/javascript "access plus 1 week"

ExpiresByType application/javascript "access plus 1 week"

ExpiresByType application/x-javascript "access plus 1 week"

ExpiresByType image/x-icon "access plus 1 year"

ExpiresByType image/svg+xml "access plus 1 year"

ExpiresByType image/vnd.microsoft.icon "access plus 1 year"

ExpiresByType application/font-woff "access plus 1 year"

ExpiresByType application/x-font-woff "access plus 1 year"

ExpiresByType font/woff2 "access plus 1 year"

ExpiresByType application/vnd.ms-fontobject "access plus 1 year"

ExpiresByType font/opentype "access plus 1 year"

ExpiresByType font/ttf "access plus 1 year"

ExpiresByType font/otf "access plus 1 year"

ExpiresByType application/x-font-ttf "access plus 1 year"

ExpiresByType application/x-font-otf "access plus 1 year"

</IfModule>



<IfModule mod_headers.c>

Header unset Etag

</IfModule>

FileETag none



<IfModule mod_deflate.c>

<IfModule mod_filter.c>

     AddOutputFilterByType DEFLATE text/html text/css text/javascript application/javascript application/x-javascript font/ttf application/x-font-ttf font/otf application/x-font-otf font/opentype image/svg+xml

</IfModule>

</IfModule>



# Se il rewrite mod non è abilitato

ErrorDocument 404 /index.php?controller=404

Shopify, Squarespace, Adobe Commerce e altre piattaforme cloud

Shopify, Squarespace e Adobe Commerce (precedentemente Magento Commerce) sono piattaforme basate su cloud che non forniscono accesso diretto al file .htaccess. Tutte le configurazioni vengono effettuate tramite il pannello di amministrazione.

Altri esempi di tali servizi includono Wix, Weebly, BigCommerce e Jimdo. Queste piattaforme consentono agli utenti di configurare e ottimizzare i propri siti web tramite interfacce visive, senza la necessità di modificare manualmente i file di configurazione del server.

Hai bisogno di aiuto per ripristinare il tuo file .htaccess?

Se non sei sicuro di quale CMS utilizzi il tuo sito web o di come ripristinare in modo sicuro un file .htaccess danneggiato, siamo qui per aiutarti.

Il nostro supporto tecnico è completamente gratuito per tutti i clienti Kodu.cloud e disponibile 24 ore su 24, 7 giorni su 7, 365 giorni all'anno. Semplicemente crea un ticket di supporto e il nostro team ti assisterà in pochi minuti.

Per maggiori dettagli su cosa è incluso, consulta la nostra policy di supporto.