Version complète: sur le forum Webmaster Hub : URL rewriting d'un site SPIP
Webmaster Hub > Création et exploitation de Sites Internet > Systèmes de publication
Quasar
Bonsoir à tous,

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

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. sad.gif
Dan
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 wink.gif
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 wink.gif

Dan
Quasar
Bonsoir Dan,

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

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 smile.gif
Dan
Salut Quasar,

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

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.
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]


Dan
Quasar
Salut Dan,

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

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. smile.gif :up:
Dan
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 "/" wink.gif

Dan
Nicolas
Bonjour,

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

CITATION
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]
Dan
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 wink.gif

Dan
Nicolas
Salut Dan,

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

Code:
CITATION
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
Voici le fichier .htaccess du Hub, alors que les publications sont dans un sous répretoire, et le .htaccess aussi wink.gif
CODE
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 ...
Nicolas
Merci!!

CITATION
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 tongue.gif ! Le site en question est en hébergement mutualisé; le pb vient p-e de là!
Nicolas
Ca marche avec ce code (le htaccess se trouve dans le repertoire spip)

CITATION
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]
Dan
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. laugh.gif

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 wink.gif

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

Dan
Quasar
Bonsoir

Je vous remercie pour vos conseils. smile.gif
coyote90
CITATION(Dan @ dimanche 16 mai 2004, 09:51)
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, j’ai pris l’habitude d’installer mes sites web en sous répertoires. j’ai donc physiquement : http://www.monsite.fr/spip/
je souhaiterais que ce sous-répertoire "spip" soit invisible aux internautes et qu’ils naviguent sous spip avec l’adresse suivante 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 m’aider ???
rubenxela
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 :

CITATION
disallow /article.php3
disallow /rubrique.php3
disallow /breve.php3


Est-ce que ça suffit ? est-ce qu'il n'y a pas de risques ?
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.