Aller au contenu

URL rewriting d'un site SPIP


Quasar

Sujets conseillés

Bonsoir à tous,

J'ai suivi les conseils du site uzine.net pour faire mon url rewriting, mais ça marche pas. :(

J'ai fait le test exactement comme indiqué dans cette page : http://www.uzine.net/spip_contrib/article....?id_article=106 et j'obtiens à chaque fois une erreur 500. (Mon hébergeur confirme que le mod rewrite est activé.)

Je vous remercie d'avance si vous pouvez m'indiquer ce que je dois faire pour y arriver. :(

Lien vers le commentaire
Partager sur d’autres sites

Salut Quasar,

L'article que tu as lu sur uzine.net est le même que celui que tu trouveras sur le Hub... et pour cause ;)

Mod_rewrite, ou la réécriture des URL "à la volée"

QUelle est l'URL de ton site ? Et quel est le contenu de ton fichier .htaccess ? En général, une erreur 500 vient d'un mauvais fichier .htaccess, ou en tout cas d'une erreur de syntaxe dans celui-ci ;)

Dan

Lien vers le commentaire
Partager sur d’autres sites

  • 4 semaines plus tard...

Bonsoir Dan,

Après un mois d'absence, je reviens à charge pour l'url rewrting! J'espère que tu m'aideras! :)

Voilà, j'ai commencé par faire le test proposé par l'article :

Options +FollowSymlinks

RewriteEngine on

RewriteRule ^nexistepas.html$ trouve.html [L]

Et j'obtiens une page erreur 500!

J'ai ensuite mis [QSA,L] à la place de [L] et pareil, erreur 500.

Et lorsque je teste la solution url rewriting pour spip :

Options +FollowSymlinks

RewriteEngine on

RewriteRule ^article([0-9]*).html$ /article.php3?id_article=$1 [QSA,L]

RewriteRule ^rubrique([0-9]*).html$ /rubrique.php3?id_rubrique=$1 [QSA,L]

RewriteRule ^breve([0-9]*).html$ /breve.php3?id_breve=$1 [QSA,L]

RewriteRule ^forum([0-9]*).html$ /forum.php3?id_forum=$1 [QSA,L]

Tout en modifiant le fichier inc-urls-dist.php3, l'opération échoue, puisque j'obtiens les fichiers en .html mais avec une erreur 404.

Mon hébergeur jure que le mod rewrite est activé.

As-tu une idée d'où peut venir le souci ?

Merci pour ton aide :)

Lien vers le commentaire
Partager sur d’autres sites

Salut Quasar,

Ce qui me surprend, c'est que tu aies une erreur 500 dans le premier cas, et pas dans le second :(

Essayes les règles suivantes pour Spip (peut-être tes fichiers ne sont-ils pas à la racine du site). Laisses de côté le "Options +FollowSymLinks" pour l'instant.

RewriteEngine on 
RewriteRule ^article([0-9]*).html$ article.php3?id_article=$1 [QSA,L]
RewriteRule ^rubrique([0-9]*).html$ rubrique.php3?id_rubrique=$1 [QSA,L]
RewriteRule ^breve([0-9]*).html$ breve.php3?id_breve=$1 [QSA,L]
RewriteRule ^forum([0-9]*).html$ forum.php3?id_forum=$1 [QSA,L]

Dan

Lien vers le commentaire
Partager sur d’autres sites

Salut Dan,

Je te remercie pour ta réponse. En effet, sans le "Options +FollowSymLinks", l'url rewriting marche avec le code :

RewriteEngine on 
RewriteRule ^article([0-9]*).html$ /article.php3?id_article=$1 [QSA,L]
RewriteRule ^rubrique([0-9]*).html$ /rubrique.php3?id_rubrique=$1 [QSA,L]
RewriteRule ^breve([0-9]*).html$ /breve.php3?id_breve=$1 [QSA,L]
RewriteRule ^forum([0-9]*).html$ /forum.php3?id_forum=$1 [QSA,L]

C'est quoi le sens de l'ajout ou non de "Options +FollowSymLinks"?

Merci bcp pour ton aide, Dan. :):up:

Lien vers le commentaire
Partager sur d’autres sites

Salut Quasar,

L'option +FollowSymlinks donne instruction au module mod_rewrite de suivre les liens symboliques (l'équivalent du "raccourci" sous Windows).

Il semble que ton hébergeur ne permette pas de modifier cette option, ce qui génère l'erreur 500.

Par contre, tes règles ne sont pas syntactiquement correctes et ne fonctionneront plus si tu es amené à déplacer ton arborescence Spip dans un sous-répertoire, à cause du / que tu mets en 2ème partie d'expression. Elle ne fonctionne que parce que tes fichiers sont à la racine. Tu devrais enlever les "/" ;)

Dan

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines plus tard...

Bonjour,

Si Spip est installé dans un sous-répertoire il faut utiliser le code suivant:

RewriteEngine on

RewriteRule ^sousrep/article([0-9]*).html$ /sousrep/article.php3?id_article=$1 [QSA,L]

RewriteRule ^sousrep/rubrique([0-9]*).html$ /sousrep/rubrique.php3?id_rubrique=$1 [QSA,L]

RewriteRule ^sousrep/breve([0-9]*).html$ /sousrep/breve.php3?id_breve=$1 [QSA,L]

RewriteRule ^sousrep/forum([0-9]*).html$ /sousrep/forum.php3?id_forum=$1 [QSA,L]

Lien vers le commentaire
Partager sur d’autres sites

Nicolas,

Pas d'accord avec toi, même si cela fonctionne... B)

En mettant ces règles à la racine du site, elles seront testées pour chaque hit sur le serveur, ce qui le chargera trop.

En les mettant (modifiées) dans le fichier .htaccess du répertoire, on limite les dégâts ;)

Dan

Lien vers le commentaire
Partager sur d’autres sites

Salut Dan,

En mettant le .htaccess dans le répertoire spip j'obtiens une erreur 500

Code:

RewriteEngine on

RewriteRule ^article([0-9]*).html$ article.php3?id_article=$1 [QSA,L]

RewriteRule ^rubrique([0-9]*).html$ rubrique.php3?id_rubrique=$1 [QSA,L]

RewriteRule ^breve([0-9]*).html$ breve.php3?id_breve=$1 [QSA,L]

RewriteRule ^forum([0-9]*).html$ forum.php3?id_forum=$1 [QSA,L]

Lien vers le commentaire
Partager sur d’autres sites

Voici le fichier .htaccess du Hub, alors que les publications sont dans un sous répretoire, et le .htaccess aussi ;)

RewriteEngine on
Options +FollowSymlinks
#
RewriteRule ^(.*)\.(png|gif|jpe?g|js|css)$ - [L]
# urls spip
RewriteRule ^(article|breve|rubrique)([0-9]+)\.html$   $1.php3?id_$1=$2 [QSA,L]
RewriteRule (article|breve|plan|recherche|rubrique|sommaire)\.html$ - [F]

Les seules différences avec le tien sont:

  • on traite d'abord images, javascript et .css pour éviter de passer à travers toutes les règles pour ces fichiers
  • l'utilisation du FollowSymlinks
  • la notation [0-9]+ au lieu de [0-9]* (plus logique...)
  • l'interdiction d'accéder aux squelettes (dernière ligne)

Dan

PS: assures-toi de ne pas avoir d'autres lignes qui entrent en conflit avec celles-ci ...

Lien vers le commentaire
Partager sur d’autres sites

Merci!!

assures-toi de ne pas avoir d'autres lignes qui entrent en conflit avec celles-ci ...

AMA c'était ça le pb!

Par contre maintenant j'ai une erreur 404 :P ! Le site en question est en hébergement mutualisé; le pb vient p-e de là!

Lien vers le commentaire
Partager sur d’autres sites

Ca marche avec ce code (le htaccess se trouve dans le repertoire spip)

RewriteEngine on

#Options +FollowSymlinks

#

RewriteRule ^(.*)\.(png|gif|jpe?g|js|css)$ - [L]

# urls spip

RewriteRule ^(article|breve|rubrique)([0-9]+)\.html$  /repertoire_spip/$1.php3?id_$1=$2 [QSA,L]

RewriteRule (article|breve|plan|recherche|rubrique|sommaire)\.html$ - [F]

Lien vers le commentaire
Partager sur d’autres sites

Nicolas,

Tu aurais dû préciser l'hébergeur. Mais vu les règles que tu dois utilises (en forçant un chemin absolu) il se devine aisément. :lol:

Je ne vais pas moi-même "monter du doigt" mais c'est un défaut de configuration chez l'hébergeur qui t'y force ;)

Tu aurais aussi pu faire usage du "RewriteBase" pour tous les sous-répertoires.

Dan

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines plus tard...
Tu aurais aussi pu faire usage du "RewriteBase" pour tous les sous-répertoires.

Euhhh.. ça marche comment ce RewriteBase ???

Pour des raisons de maintenance, jai pris lhabitude dinstaller mes sites web en sous répertoires. jai donc physiquement : [b]http://www.monsite.fr/spip/'>]http://www.monsite.fr/spip/

je souhaiterais que ce sous-répertoire "spip" soit invisible aux internautes et quils naviguent sous spip avec ladresse suivante [b]http://www.monsite.fr/

je ne trouve pas la règle à utiliser, et je me perd entre les notions de RewriteBase et RewriteRule

Pouvez-vous maider ???

Lien vers le commentaire
Partager sur d’autres sites

  • 1 month later...

Super la réécriture sous spip c'est vraiment du gateau. Par contre je me demande comment désindexer les anciennes requètes en php ..

J'ai mis en place un fichier robots.txt avec dedans :

disallow /article.php3

disallow /rubrique.php3

disallow /breve.php3

Est-ce que ça suffit ? est-ce qu'il n'y a pas de risques ?

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...