##############################################################
# Fichier .htaccess                               SPIP v 4.2 #
#                                                            #
# Permet de controler les URLs et la version de php utilisee #
# Compatible avec les URLs 'html', 'propres' et 'propres2'   #
#                                                            #
# Pour utiliser ce fichier renommez-le '.htaccess' dans le   #
# repertoire racine du site, en veillant a ne pas ecraser un #
# .htaccess personnalise qui s'y trouverait deja             #
#                                                            #
# Attention certains hebergeurs desactivent tout ou partie   #
# des fonctions du fichier .htaccess ; celui-ci est donc     #
# indicatif - en cas de difficulte voir sur les forums SPIP  #
##############################################################

RewriteEngine On

################ CONFIGURATION ######################

### Configuration sous-repertoire

# Calcule automatiquememt le RewriteBase (qui permet de faire fonctionner
# les belles URLs). De la sorte, un meme site peut etre affiche en racine
# ou dans un sous repertoire sans devoir modifier la ligne RewriteBase.
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]

# En alternative aux 2 lignes precedentes (a commenter dans ce cas),
# vous pouvez indiquer un RewriteBase specifique
#RewriteBase /

###


################ REGLAGES PERSONNALISES ######################
# Inscrivez ci-dessous vos reglages supplementaires



############# GESTIONS DES ACCES FICHIERS #####################
###

# bloquer les acces aux fichiers caches (.svn, .git, etc)
RewriteCond %{REQUEST_URI} !^/.well-known/
RewriteRule "(^|/)\." - [R=404,NC,L]
# bloquer les informations Composer
RedirectMatch 404 ^/composer\.(json|lock|phar)$

# Si le fichier ou repertoire demande existe
# ignorer toutes les regles qui suivent
<IfModule mod_headers.c>
	RewriteCond %{REQUEST_FILENAME} -f
	RewriteRule \.pdf$ - [skip=100]
	RewriteCond %{REQUEST_FILENAME} -f
	RewriteRule ^IMG/ - [env=sandbox:sandbox,skip=100]
	Header add Content-Security-Policy "sandbox" env=sandbox
</IfModule>
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule "." - [skip=100]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule "." - [skip=100]
#
###

################ GESTIONS DES URLS SPIP #######################
###

###
# Compatibilite avec les URLS "html" (pour transition sympa)
# voir fichier ecrire/urls/html.php
RewriteRule ^rubrique([0-9]+)(\.html)?$	spip.php?page=rubrique&id_rubrique=$1 [QSA,L]
RewriteRule ^article([0-9]+)(\.html)?$	spip.php?page=article&id_article=$1 [QSA,L]
RewriteRule ^breve([0-9]+)(\.html)?$	spip.php?page=breve&id_breve=$1 [QSA,L]
RewriteRule ^mot([0-9]+)(\.html)?$		spip.php?page=mot&id_mot=$1 [QSA,L]
RewriteRule ^auteur([0-9]+)(\.html)?$	spip.php?page=auteur&id_auteur=$1 [QSA,L]
RewriteRule ^site([0-9]+)(\.html)?$	spip.php?page=site&id_syndic=$1 [QSA,L]

# Fin compatibilite
###

###
# ping http://site/1234 => article1234

RewriteRule ^([1-9][0-9]*)$     spip.php?action=redirect&type=article&status=301&id=$1 [QSA,L]

#
###

###
# APIs
# http://site/xmlrpc.api
# http://site/atom.api/articles/1234
# https://site/offline.api.sw.js

RewriteRule ^(ecrire/)?([\w]+)\.api([/.](.*))?$ spip.php?action=api_$2&arg=$4 [QSA,L]

# Fin des APIs
###

###
# URLs "propres", "propres2", "libres", "arbo"

RewriteRule ^[^\.]+(\.html)?$		spip.php [QSA,E=url_propre:$0,L]

# Fin URLs "propres" et "propres2"
###

###
# Divers

###
# Fichiers "standards" (si absents de la racine)
#
RewriteRule ^robots[.]txt$      spip.php?page=robots.txt [QSA,L]
RewriteRule ^favicon[.]ico$      spip.php?page=favicon.ico [QSA,L]
RewriteRule ^sitemap[.]xml$      spip.php?page=sitemap.xml [QSA,L]
##

# Favicon pour itrucs
# Si vous avez le plugin filtres_images et qu'une méthode de retouche a été configurée, vous pouvez décommenter la ligne ci-dessous.
#RewriteRule ^apple-touch-icon(-(\d+x\d+))?(-precomposed)?[.]png$	spip.php?page=apple-touch-icon.png&size=$2 [QSA,L]


<IfModule mod_expires.c>
	ExpiresByType text/html  "access plus 0 seconds"
</IfModule>

#################################
# gestion des erreurs 404
# voir https://www.spip.net/fr_article3226.html
# Pour que le serveur http renvoie les erreurs 404 vers SPIP, supprimer le '#'

# ErrorDocument 404 /spip.php?page=404

#
###
