Skip to content
Extraits de code Groupes Projets
Valider 59a39be9 rédigé par Fil's avatar Fil
Parcourir les fichiers

Et voici le grand .htaccess unifié de SPIP
avec des explications un peu plus claires
parent 97cbebb2
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
###########################################################
# 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 ########################
##############################################################
# 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"
###
......@@ -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'.
*/
......
......@@ -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];
}
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter