Version complète: sur le forum Webmaster Hub : OVH + 90Plan + multidom + URL rewriting Freeglobes
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > Fichier .htaccess et réécriture d'URLs
philippe-h
bonjour!

suite à un problème d'URL rewriting sur un script Freeglobes, j'expose ici le problème en détail dans la mesure où je sais que traînent par ici quelques spécialistes d'OVH et du fichier .htaccess! wink.gif

voici donc l'exposé des faits:

je suis en train d'installer la dernière version de freeglobes sur un hébergement 0VH / 90PLAN, plus précisément sur un multidomaine.

L'URL-rewriting est activé, voici le fichier .htaccess actuel:

CODE
SetEnv REGISTER_GLOBALS 0

RewriteEngine on


RewriteRule   /(.*)-f-([0-9]*)-([0-9]*).html$   /annuaire-bretagne/feed.php?feedid=$2&linkid=$3 [L]
RewriteRule   /(.*)-s-([0-9]*).html$   /annuaire-bretagne/single.php?id=$2 [L]
RewriteRule   /(.*)-t-([0-9]*).html$   /annuaire-bretagne/tag.php?name=$1&id=$2 [L]
RewriteRule   /(.*)-c-([0-9]*).html$   /annuaire-bretagne/index.php?name=$1&dir=$2 [L]
RewriteRule   /(.*)-k-([0-9]*).html$   /annuaire-bretagne/index.php?do=keywords&words=$1&id=$2 [L]
RewriteRule   /(.*)-c-([0-9]*)-p-([0-9]*).html$   /annuaire-bretagne/index.php?name=$1&dir=$2&start=$3 [L]
RewriteRule   /top-rank([0-9]{1,2}).html$   /annuaire-bretagne/index.php?do=top-rank&pr=$1 [L]
RewriteRule   /(([a-z]|-)*).html$  /annuaire-bretagne/index.php?do=$1 [L]


Les droits sont en 777 sur le .htaccess.

Tous les liens sont OK sauf ceux menant vers les catégories. Un message de firefox s'affiche:

CODE
    Redirection de page incorrecte

    Firefox a détecté que le serveur redirige la demande pour cette adresse d'une manière qui n'aboutira pas.  

    *   La cause de ce problème peut être la désactivation ou le refus
              des cookies.



D'autre part, j'ai effacé toutes les catégories, puis recommencé, mais il semblerait que les numéros des catégories ne se réinitialisent pas, càd que lors de la création d'une première catégorie (après avoir supprimé les 6 catégories précédentes) le numéro de cette catégorie porte le numéro 7 dans l'URL, est-ce normal?

voici l'url de l'annuaire: http://www.menhir-location/annuaire-bretagne/

merci pour votre aide précieuse!

N.B: tout fonctionne si je désactive le rewriting, mais je tiens vraiment à l'activer!

merci pour votre aide, c'est clairement le fichier .htaccess qui n'est pas bon, ou/et un pb lié au multidomaine?
Dan
Il faudrait commencer par mettre l'URL correcte !

L'URL de l'annuaire est http://www.menhir-location.fr/annuaire-bretagne/ (tu as oublié le .fr) wink.gif

Pour le numéro 7 de ta catégorie, c'est normal. Tu n'as pas remis à zéro l'auto-incrément....

Tu devrais préfixer les .html par \ (mettre \.html) et remplacer les * par + (vu qu'il t'en faut au moins un)
Et tu peux aussi supprimer le premier / dans tes règles.


philippe-h
bonjour Dan, et merci de vous pencher sur ce qui est pour moi un gros casse-tête depuis 3 jours! merci d'avoir modifié mon lien!

j'ai fait les modifs au niveau des / des \ des + et des * mais cela ne fonctionne pas (du tout!)

voici donc le .htaccess modifié:

CODE
SetEnv REGISTER_GLOBALS 0

RewriteEngine on


RewriteRule   /(.+)-f-([0-9]+)-([0-9]+)\.html$   annuaire-bretagne/feed.php?feedid=$2&linkid=$3 [L]
RewriteRule   /(.+)-s-([0-9]+)\.html$   annuaire-bretagne/single.php?id=$2 [L]
RewriteRule   /(.+)-t-([0-9]+)\.html$   annuaire-bretagne/tag.php?name=$1&id=$2 [L]
RewriteRule   /(.+)-c-([0-9]+)\.html$   annuaire-bretagne/index.php?name=$1&dir=$2 [L]
RewriteRule   /(.+)-k-([0-9]+)\.html$   annuaire-bretagne/index.php?do=keywords&words=$1&id=$2 [L]
RewriteRule   /(.+)-c-([0-9]+)-p-([0-9]+)\.html$   annuaire-bretagne/index.php?name=$1&dir=$2&start=$3 [L]
RewriteRule   /top-rank([0-9]{1,2})\.html$   annuaire-bretagne/index.php?do=top-rank&pr=$1 [L]
RewriteRule   /(([a-z]|-)+)`\.html$  annuaire-bretagne/index.php?do=$1 [L]
deskiller
Voici un extrait de ce que j'ai et qui marche chez OVH :
CODE
RewriteRule ^(.+)-s-([0-9]+).html$ single.php?id=$2 [L]
RewriteRule ^(.+)-c-([0-9]+).html$ index.php?name=$1&dir=$2 [L]
RewriteRule ^(.+)-c-([0-9]+)-p-([0-9]+).html$ index.php?name=$1&dir=$2&start=$3 [L]
RewriteRule ^(.+)-k-([0-9]+).html$ index.php?do=keywords&words=$1&id=$2 [L]
RewriteRule ^(.+)-k-([0-9]+)-p-([0-9]+).html$ index.php?do=keywords&words=$1&id=$2&start=$3 [L]
RewriteRule ^(([a-z]|-)+).html$ index.php?do=$1 [L]


J'avais aussi fait quelques modifs par rapport à l'original pour le rendre (un peu) plus propre.

Par contre j'ai un ^ en début de règle, mais je ne sais plus si c'est impératif.

Après, il faut vérifier que tu as tout le code, soit redownloader tout le package, soit suivre le fil par des tests successifs en partant de index.php.

J'ai pas mal modifié la structure de mon freeglobes et de mémoire, j'avais eu ces messages quand le code n'était pas au point.

Edit : j'ai retrouvé mon doc de référence sur le rewriting (http://www.webmaster-hub.com/publication/Mod-rewrite-ou-la-reecriture-des.html) et il me semble que le ^ est nécessaire.
Dan
CITATION(deskiller @ mercredi 30 avril 2008 à 19:02) *
Edit : j'ai retrouvé mon doc de référence sur le rewriting (http://www.webmaster-hub.com/publication/Mod-rewrite-ou-la-reecriture-des.html) et il me semble que le ^ est nécessaire.

Merci pour le "doc de référence". wink.gif

Il date un peu (mais est toujours d'actualité) et mériterait une suite...

Le ^ (caret) n'est pas indispensable, vu qu'il marque de début de ligne. Avec certaines configurations Apache, ce début d'expression peut être un /.

C'est pourquoi j'utilise toujours le ? après le / du début, comme ça il devient facultatif.

Dan
philippe-h
j'ai essayé, ça ne fonctionne toujours pas, je suis au bord de la crise de nerfs! j'ai aussi essayé avec les URLS complètes (voir ci-dessous), rien à faire.

L'utilisation du ^ ne fonctionne pas du tout (plus aucun lien ne fonctionne, alors qu'avec les / tout fonctionne SAUF les catégories)

Je rappelle qu'il s'agit d'un NDD de chez OVH, mais hébergé en multidomaine d'un autre NDD, lui aussi chez OVH.

voici mon fichier actuel:

CODE
SetEnv REGISTER_GLOBALS 0
Options +FollowSymlinks
RewriteEngine On

RewriteRule   /(.+)-f-([0-9]+)-([0-9]+).html$   http://www.menhir-location.fr/annuaire-bretagne/feed.php?feedid=$2&linkid=$3 [L]
RewriteRule   /(.+)-s-([0-9]+).html$   http://www.menhir-location.fr/annuaire-bretagne/single.php?id=$2 [L]
RewriteRule   /(.+)-t-([0-9]+).html$   http://www.menhir-location.fr/annuaire-bretagne/tag.php?name=$1&id=$2 [L]
RewriteRule   /(.+)-c-([0-9]+).html$   http://www.menhir-location.fr/annuaire-bretagne/index.php?name=$1&dir=$2 [L]
RewriteRule   /(.+)-k-([0-9]+).html$   http://www.menhir-location.fr/annuaire-bretagne/index.php?do=keywords&words=$1&id=$2 [L]
RewriteRule   /(.+)-c-([0-9]+)-p-([0-9]+).html$   http://www.menhir-location.fr/annuaire-bretagne/index.php?name=$1&dir=$2&start=$3 [L]
RewriteRule   /top-rank([0-9]{1,2}).html$   http://www.menhir-location.fr/annuaire-bretagne/index.php?do=top-rank&pr=$1 [L]
RewriteRule   /(([a-z]|-)+).html$  http://www.menhir-location.fr/annuaire-bretagne/index.php?do=$1 [L]
deskiller
Un petit retour sur la solution, vu que ça a l'air de marcher maintenant r_question6161.gif
philippe-h
en effet, après des heures de recherche, une illumination: il faut mettre /repertoire/ (remplacer "repertoire" par le nom de votre répertoire dans lequel se trouve le script freeglobes) avant les URL, dans la colonne de droite ET celle de gauche; voilà ce que cela donne:

CODE
SetEnv REGISTER_GLOBALS 0
RewriteEngine On

RewriteRule   /repertoire/(.*)-f-([0-9]*)-([0-9]*).html$   /repertoire/feed.php?feedid=$2&linkid=$3 [L]
RewriteRule   /repertoire/(.*)-s-([0-9]*).html$   /repertoire/single.php?id=$2 [L]
RewriteRule   /repertoire/(.*)-t-([0-9]*).html$   /repertoire/tag.php?name=$1&id=$2 [L]
RewriteRule   /repertoire/(.*)-c-([0-9]*).html$   /repertoire/index.php?name=$1&dir=$2 [L]
RewriteRule   /repertoire/(.*)-k-([0-9]*).html$   /repertoire/index.php?do=keywords&words=$1&id=$2 [L]
RewriteRule   /repertoire/(.*)-c-([0-9]*)-p-([0-9]*).html$   /repertoire/index.php?name=$1&dir=$2&start=$3 [L]
RewriteRule   /repertoire/top-rank([0-9]{1,2}).html$   /repertoire/index.php?do=top-rank&pr=$1 [L]
RewriteRule   /repertoire/(([a-z]|-)*).html$   /repertoire/index.php?do=$1 [L]


tout fonctionne parfaitement!

merci à ceux qui ont essayé de filer un coup de pouce!
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.