Browse Source

Et voici le grand .htaccess unifié de SPIP


			
			
				spip-1.8
			
			
		
Fil 18 years ago
parent
commit
59a39be940
  1. 49
      htaccess-propres.txt
  2. 101
      htaccess.txt
  3. 23
      inc-urls-html.php3
  4. 30
      inc-urls-propres.php3

49
htaccess-propres.txt

@ -1,6 +1,6 @@
###########################################################
# Fichier .htaccess pour les URLs propres ; a installer #
# si vous reglez $type_urls='propres' #
# si vous reglez $type_urls='propres' ou 'propres2' #
# dans ecrire/mes_options.php3 #
# (fichier associe : inc-urls-propres.php3) #
# #
@ -9,8 +9,27 @@
RewriteEngine On
### si votre site est en sous-domaine, preciser ci-dessous
# RewriteBase /sous/domaine/
### Si votre site est dans un sous-repertoire, preciser ci-dessous
# RewriteBase /sous/repertoire/
################ DEBUT HTACCESS SPIP ######################
### Supprimez le '#' de la ligne ci-dessous si votre hebergement
### lit les .php3 avec php3 au lieu de php4 ou php5 (sans garantie!)
# AddType x-mapp-php4 .php3
###
# Si le fichier ou repertoire existe, ignorer toutes les regles suivantes
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule "." - [skip=100]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule "." - [skip=100]
#
###
###
# Compatibilite avec les URLS "html" (pour transition sympa)
@ -22,33 +41,33 @@ RewriteRule ^auteur([0-9]+)\.html$ auteur.php3?id_auteur=$1 [QSA,L]
# Fin compatibilite
###
###
# URLs "propres" et "propres2"
# Rediriger les mots et breves sans le "+" final
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(\+[^/\.\+]+)(\.html)?$ /$1+$2 [QSA,R]
# Les mots-cles
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^\+-[^/\.]+-\+(\.html)?$ mot.php3 [QSA,E=url_propre:$0,L]
# Les breves
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^\+[^/\.]+\+(\.html)?$ breve.php3 [QSA,E=url_propre:$0,L]
# Les rubriques
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^-[^/\.]+-(\.html)?$ rubrique.php3 [QSA,E=url_propre:$0,L]
# les auteurs
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^_[^/\.]+(\.html)?$ auteur.php3 [QSA,E=url_propre:$0,L]
# Les articles (en dernier car expression plus "large")
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^[^/\.]+(\.html)?$ article.php3 [QSA,E=url_propre:$0,L]
# Fin URLs "propres" et "propres2"
###
# rediriger les .php3 errones vers .php
RewriteCond %{REQUEST_FILENAME} (.*\.php)3$
RewriteCond $1 -f
RewriteRule . $1 [QSA,L]
################ FIN HTACCESS SPIP ########################

101
htaccess.txt

@ -0,0 +1,101 @@
##############################################################
# Fichier .htaccess SPIP v1.8 #
# #
# Permet de controler les URLs et la version de php utilisee #
# Compatible avec les URLs 'html', 'propres' et 'propres2' #
# Permet aussi d'effectuer la transition de .PHP 3 vers .PHP #
# #
# 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
# Si votre site est dans un sous-repertoire, preciser ci-dessous
# le nom du sous-repertoire, et supprimer le '#'
#RewriteBase /sous/repertoire/
### Version PHP 3
# Si vous utilisez une distribution 'PHP 3' de SPIP, et si votre
# hebergement execute encore les .php[3] avec un moteur PHP 3
# au lieu de PHP 4, vous pouvez decommenter la ligne ci-dessous
# pour faire fonctionner les fichiers sous php4 (sans garantie)
#AddType x-mapp-php4 .php3
# SPIP version 'php' - si vous avez d'anciennes adresses en '.php[3]',
# supprimez le '#' sur les lignes qui suivent pour rediriger les acces
# errones vers le .php correspondant
#RewriteCond %{REQUEST_FILENAME} -f
#RewriteRule ^(.+)\.php[3]$ $1.php [QSA,L]
# Fin version
###
################ REGLAGES PERSONNALISES ######################
# Inscrivez ci-dessous vos reglages supplementaires
################ GESTIONS DES URLS SPIP #######################
###
# Si le fichier ou repertoire demande existe
# ignorer toutes les regles qui suivent
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule "." - [skip=100]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule "." - [skip=100]
#
###
###
# Compatibilite avec les URLS "html" (pour transition sympa)
# voir fichier inc-urls-html.php3
RewriteRule ^rubrique([0-9]+)\.html$ rubrique.php3?id_rubrique=$1 [QSA,L]
RewriteRule ^article([0-9]+)\.html$ article.php3?id_article=$1 [QSA,L]
RewriteRule ^breve([0-9]+)\.html$ breve.php3?id_breve=$1 [QSA,L]
RewriteRule ^mot([0-9]+)\.html$ mot.php3?id_mot=$1 [QSA,L]
RewriteRule ^auteur([0-9]+)\.html$ auteur.php3?id_auteur=$1 [QSA,L]
# Fin compatibilite
###
###
# URLs "propres" et "propres2"
# pensez a regler $type_urls='propres' ou 'propres2'
# dans ecrire/mes_options.php3
# (fichier associe : inc-urls-propres.php3)
# Les mots-cles
RewriteRule ^\+-[^/\.]+(-\+)?(\.html)?$ mot.php3 [QSA,E=url_propre:$0,L]
# Les breves
RewriteRule ^\+[^/\.]+\+?(\.html)?$ breve.php3 [QSA,E=url_propre:$0,L]
# Les rubriques
RewriteRule ^-[^/\.]+-?(\.html)?$ rubrique.php3 [QSA,E=url_propre:$0,L]
# les auteurs
RewriteRule ^_[^/\.]+_?(\.html)?$ auteur.php3 [QSA,E=url_propre:$0,L]
# Les articles (en dernier car expression plus "large")
RewriteRule ^[^/\.]+(\.html)?$ article.php3 [QSA,E=url_propre:$0,L]
# Fin URLs "propres" et "propres2"
###

23
inc-urls-html.php3

@ -14,19 +14,22 @@
- Comment utiliser ce jeu d'URLs ?
Il faut recopier le fichier htaccess-propres.txt sous le nom .htaccess
dans le repertoire de base du site SPIP (attention a ne pas ecraser
d'autres reglages que vous pourriez avoir mis dans ce fichier) ; si votre site
est en "sous-repertoire", vous devrez editer la ligne "RewriteBase" ce fichier.
Recopiez le fichier "htaccess.txt" du repertoire de base du site SPIP sous
le sous le nom ".htaccess" (attention a ne pas ecraser d'autres reglages
que vous pourriez avoir mis dans ce fichier) ; si votre site est en
"sous-repertoire", vous devrez aussi editer la ligne "RewriteBase" ce fichier.
Les URLs definies seront alors redirigees vers les fichiers de SPIP.
definissez ensuite dans ecrire/mes_options.php3 :
Definissez ensuite dans ecrire/mes_options.php3 :
type_urls = 'html';
Note : le fichier htaccess-propres.txt est compatible avec les URLS 'html' ;
toutefois si htaccess-propres.txt se revele trop "puissant", car trop generique,
et conduit a des problemes (en lien par exemple avec d'autres applications
installees dans votre repertoire, a cote de SPIP), vous pouvez utiliser a la
place le fichier htaccess-html.txt, qui est suffisant pour ce type d'urls.
SPIP calculera alors ses liens sous la forme "article123.html".
Note : si le fichier htaccess.txt se revele trop "puissant", car trop
generique, et conduit a des problemes (en lien par exemple avec d'autres
applications installees dans votre repertoire, a cote de SPIP), vous
pouvez l'editer pour ne conserver que la partie concernant les URLS 'html'.
*/

30
inc-urls-propres.php3

@ -19,16 +19,19 @@ define("_INC_URLS2", "1");
- Comment utiliser ce jeu d'URLs ?
Il faut recopier le fichier htaccess-propres.txt sous le nom .htaccess
dans le repertoire de base du site SPIP (attention a ne pas ecraser
d'autres reglages que vous pourriez avoir mis dans ce fichier) ; si votre site
est en "sous-repertoire", vous devrez editer la ligne "RewriteBase" ce fichier.
Recopiez le fichier "htaccess.txt" du repertoire de base du site SPIP sous
le sous le nom ".htaccess" (attention a ne pas ecraser d'autres reglages
que vous pourriez avoir mis dans ce fichier) ; si votre site est en
"sous-repertoire", vous devrez aussi editer la ligne "RewriteBase" ce fichier.
Les URLs definies seront alors redirigees vers les fichiers de SPIP.
definissez ensuite dans ecrire/mes_options.php3 :
Definissez ensuite dans ecrire/mes_options.php3 :
type_urls = 'propres';
ou
SPIP calculera alors ses liens sous la forme "Mon-titre-d-article".
Variante :
type_urls = 'propres2';
pour ajouter '.html' aux adresses generees.
ajoutera '.html' aux adresses generees : "Mon-titre-d-article.html"
*/
@ -157,7 +160,7 @@ function generer_url_mot($id_mot) {
function generer_url_auteur($id_auteur) {
$url = _generer_url_propre('auteur', $id_auteur);
if ($url)
return '_'.$url._terminaison_urls_propres;
return '_'.$url.'_'._terminaison_urls_propres;
else
return "auteur.php3?id_auteur=$id_auteur";
}
@ -202,19 +205,19 @@ preg_match(',(^|/)((article|breve|rubrique|mot|auteur)(\.php3?|[0-9]+\.html)([?&
$url_propre = preg_replace(',\.html$,i', '', $url_propre);
// Detecter les differents types d'objets demandes
if (preg_match(',^\+-(.*?)-\+$,', $url_propre, $regs)) {
if (preg_match(',^\+-(.*?)-?\+?$,', $url_propre, $regs)) {
$type = 'mot';
$url_propre = $regs[1];
}
else if (preg_match(',^-(.*)-$,', $url_propre, $regs)) {
else if (preg_match(',^-(.*)-?$,', $url_propre, $regs)) {
$type = 'rubrique';
$url_propre = $regs[1];
}
else if (preg_match(',^\+(.*)\+$,', $url_propre, $regs)) {
else if (preg_match(',^\+(.*)\+?$,', $url_propre, $regs)) {
$type = 'breve';
$url_propre = $regs[1];
}
else if (preg_match(',^_(.*)$,', $url_propre, $regs)) {
else if (preg_match(',^_(.*)_?$,', $url_propre, $regs)) {
$type = 'auteur';
$url_propre = $regs[1];
}
@ -229,8 +232,7 @@ preg_match(',(^|/)((article|breve|rubrique|mot|auteur)(\.php3?|[0-9]+\.html)([?&
$query = "SELECT $col_id FROM $table
WHERE url_propre='".addslashes($url_propre)."'";
$result = spip_query($query);
if (spip_num_rows($result) == 1) {
$row = spip_fetch_array($result);
if ($row = spip_fetch_array($result)) {
$contexte[$col_id] = $row[$col_id];
}

Loading…
Cancel
Save