Introduction
Normalement SPIP permet de d’activer la fonction de ré-écriture d’URLs via les fichiers du type inc-urls-....php3, le fichier mes-options.php3 et le fichier .htaccess.
- inc-urls-....php3 : Ces fichiers définissent les règles de ré-écriture des URLs dans les pages du site, comme mettre le titre de l’article, concaténer le mot article et son n°...
- mes-options.php3 : Ce fichier permet d’indiquer quel fichier de rewriting sera utilisé (html, propres, propres2, standard...)
- .htaccess : Ce fichier va contenir (entre autres) les rêgles de redirection des URLs ré-écrites vers les articles/rubriques d’origine.
Le fonctionnement de la redirection SPIP appelée « propres » est le suivant :
- URL saisie : http://monsite/titre-de-l-article.html
- le fichier .htaccess redirige vers la page http://monsite/articles.php3?url_propre=titre-de-l-article
- articles.php3 va alors chercher l’article ayant ce titre et rediriger finalement vers http://monsite/articles.php3?id_article=3
Le problème
Le problème est que certains hébergeurs (comme Free.fr) désactivent les fonctions avancées des fichiers .htaccess (pour des raisons de sécurité ou simplement pour ne pas permettre de faire des sites trop professionnel sur un hébergement gratuit).
Il faut donc trouver une alternative aux fichiers .htaccess et faire :
- soit une redirection manuelle en PHP (cf La réécriture d’URL native de SPIP sans modifier la conf apache
- soit faire une ré-écriture « virtuelle » n’impactant pas les pages
Solution : la ré-écriture virtuelle
Cette solution permet de n’avoir à ajouter QUE le fichier inc-urls-semi-propres.php3 et encore, ce n’est qu’une pâle copie du fichier d’origine inc-urls-propres.php3
Le fichier suivant une variation de inc-urls-propres, qui garde articles.php3 ?id_article=.. dans l’URL mais qui ajoute titre=titre-de-l-article.
Le paramètre titre n’étant pas utilisé par SPIP, il est ignoré et ne sert donc qu’à l’affichage.
SPIP calculera alors ses liens sous la forme http://monsite/articles.php3?id_article=n_article&titre=titre-de-l-article.
Installation
Modifiez finalement le fichier ecrire/mes_options.php3 (ou créez le si besoin) avec le contenu suivant :
<?
$type_urls = 'semi-propres';
?>
Discussions par date d’activité
6 discussions
Bon article, si vous voulez tester l’url rewriting en local, il va falloir l’activer en local, j’ai fait un petit tutoriel pour cela :
http://www.buddyweb.fr/notes/activer-lurl-rewriting-sous-wamp/
Répondre à ce message
Bonjour
une solution propre et simple est expliquée ici : http://jannaud.fr/htaccess-clean-url-strip-slash
J’aurai mis des heures à trouver comment faire !! La galère pour avoir des url propres, maintenant c’est fait ! :)
Répondre à ce message
Ca marche sur 1.9.2 ?
est ce que qqun aurait adapté cette contrib pour spip 1.9.2 ?
Répondre à ce message
je sais pas si qqun repondra mais je viens de mettre en place cet outil, ca marche pas de problème. Mais comme je vois que les anciennes url ne disparraissent pas (dans le sens ou il n y a pas de redirection) je me fais du souci car google pourrait voir des doublons et balancer mon site dans la sand box... Donc est ce que qqun a fait le test de cet outil et observer qq chose au niveau du référencement ?
Ne t’inquietes pas, Google n’est méchant que si tu dupliques ton contenu sur des pages ayant des urls différentes, ex :
- http://www.monsite.com/page.php3
- http://www.monsite.com/autrepage.php3
- http://www.autresite.com/autrepage.php3
Avec cette contrib, il n’y a qu’une page (article.php3), le reste (après le ?) n’est pas significatif pour la sandbox.
Répondre à ce message
Bonjour.
J’ai divisé mon site en deux parties : une (rubrique) « privée »
dont l’accès est restreint, une autre (rubrique) « publique » dont
l’accès est libre.
La partie privée me permet d’échanger et de mettre en commun des
infos avec les autres utilisateurs du site. La partie publique
permet à ces mêmes utilisateurs de se faire une simili-page perso
sans rien connaitre en info (ça leur fait peur).
Les URL type « article.php3 ?id_article=XX » ne me dérange pas sur
la partie privée, mais pour la publique j’aimerais pouvoir
ponctuellement avoir des URL du type page perso :
http://www.monsite.com/~nom_utilisateur
(pas grave si l’appel à article.php3 est conservé)
afin que les utilisateurs puissent mettre l’URL de leur page sur
leur CV par exemple.
Je peux « tricher » en demandant aux utilisateurs de mettre leur
nom dans le champ « Titre » et ainsi utiliser/adapter une des
contrib’ qui font apparaître le titre.
Mais : sachant que je n’y connais rien en PHP te semble t’il
facile de n’utiliser cette régle de réécriture que pour une rubrique
du site seulement (la partie privée) ? Le coup du titre comme
URL ça me botte moyen en général : je préfère même que
« »" class="spip_url spip_out auto" rel="nofollow external">http://www.monsite.com~» soit la seule URL visible.
Oui je sais, je chipote... :-P
Ma question s’entend plus particulièrement pour l’adaptation de
ta contrib’.
Merci d’avance !
Répondre à ce message
Hello
Merci pour cette contrib ... installée hier sur Online.net ... ca marche !!!
Question : avec le peu de connaissance que j’ai (à la lecture de ton fichier "semi-propre", j’ai basculé tous les " ?php3" en ".php", mais serait il possible de supprimer de la nouvelle url le mot "titre", en l’otant directement du fichier ?
je viens de tester en local ce qui suit
modif des lignes :
return "article.php ?id_article=$id_article&titre=" . $url . _terminaison_urls_propres ;
par
return "article.php ?id_article=$id_article," . $url . _terminaison_urls_propres ;
pour avoir un numero suivit du titr uniquement
CA à l"air de coller
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |