yankey Posté 23 Mars 2006 Posté 23 Mars 2006 Bonsoir, Je rencontre un problème curieux avec la réecriture des url. Jusqu'à présent je n'avais jamais rencontré de soucis sur aucun poste (testé une bonne 10aine de config, postes, endroits différents), mais l'un de mes visiteurs a pris la peine de m'avertir qu'il était impossible d'accéder aux pages des sous-rubriques, celles sur lesquelles j'ai appliqué l'url rewrinting. La personne utilise IE ou Mozilla, le problème est le même, et il n'y a apparemment pas de code d'erreur renvoyé (404,500,etc...) le seul message est: Impossible d'afficher la page Voici le code du fichier htaccess: ErrorDocument 401 http://www.site.com/404.php ErrorDocument 403 http://www.site.com/404.php RewriteEngine On RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f RewriteRule ^.+\.php$ http://www.site.com/404.php ErrorDocument 404 http://www.site.com/404.php RewriteEngine On RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f RewriteRule ^.+\.php$ http://www.site.com/404.php RewriteEngine On RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f RewriteRule ^.+\.php$ http://www.site.com/404.htm Options +FollowSymlinks RewriteEngine on RewriteRule ^page-(.+)-([0-9]+).html$ page.php3?rub=$1&idrub=$2 [L] si quelqu'un voit l'erreur, ou sait de quoi cette erreur peut provenir ...
Dan Posté 23 Mars 2006 Posté 23 Mars 2006 Bonjour Yankey, ErrorDocument 401 /404.phpErrorDocument 403 /404.phpErrorDocument 404 /404.phpRewriteEngine OnOptions +FollowSymlinksRewriteRule ^page-(.+)-([0-9]+)\.html$ page.php3?rub=$1&idrub=$2 [L] C'est déjà plus propre... inutile d'avoir plusieurs fois la même chose.. Par contre, ta réécriture conditionnelle ne marchera pas pour les répertoires... donc les requêtes donneront la page 404.php De toutes manières, en cas d'absence d'une page, la directive ErrorDocument suffit. Pour info, il est inutile (et néfaste) de mettre une URL complète dans les directives ErrorDocument... parce que dans ce cas l'entête renvoyée serait 200 (voire 302) mais pas 404 Dan
yankey Posté 23 Mars 2006 Auteur Posté 23 Mars 2006 (modifié) Donc, tu me conseilles d'enlever la ligne : RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f RewriteRule ^.+\.php$ /404.php ? je l'ai trouvé dans la documentation fournie par l'hébergeur. Je vais nettoyer tout ça. Merci. Modifié 23 Mars 2006 par yankey
yankey Posté 23 Mars 2006 Auteur Posté 23 Mars 2006 je viens de faire faire des tests à ce visiteur, et ce qui est vraiment très bizarre est que le problème est identique sur les pages même si je n'applique pas l'url rewriting ... La page: page.php3?rub=premiere&idrub=1 lui renvoie: " serveur introuvable"... il n'y a donc que les pages sans paramêtres qui passent chez lui, il accède à: page1.php mais n'accède pas à page.php?rub=premiere&idrub=1 je comprend vraiment pas trop là
Dan Posté 23 Mars 2006 Posté 23 Mars 2006 Donc, tu me conseilles d'enlever la ligne : RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f RewriteRule ^.+\.php$ /404.php ? je l'ai trouvé dans la documentation fournie par l'hébergeur. Ben oui, c'est particulièrement idiot ! Mais rares sont les hébergeurs qui maîtrisent la réécriture d'URLs Cette règle dit que si l'URI demandée n'est pas un fichier (un vrai fichier, et non pas un répertoire), il faut rediriger vers ta page erreur. Donc les répertoires sont automatiquement redirigés , erronément bien sûr ! Il faut laisser le "ErrorDocument 404 /404.php" faire son boulot ... il suffit bien pour les fichiers inexistants et a été défini pour cette raison. Quant au fait qu'il accède à page1.php et non à page.php?rub=premier&idrub=1 ... les fichiers sont différents (page.php d'un côté, page1.php de l'autre) Et dans ta règle tu mettais l'extension .php3 au lieu de .php ... es-tu certaine qu'elle soit bonne ? Dan
yankey Posté 23 Mars 2006 Auteur Posté 23 Mars 2006 Oui, mais cette règle évite de mettre un fichier index.htm vide dans chaque dossier, si on l'enlève sans le fichier index, il devient possible d'accéder au répertoire du site et ça j'aime pas trop. Pour la règle, j'ai oublié le 3, le fait est que le visiteur dit qu'il accéde normalement aux pages de type: page.php3 ou page.php mais il ne peux pas acceder à des pages de type: page.php3?rub=rubrique&id_rub=1 je n'ai rien vu encore à ce sujet, et comme je ne rencontre moi-même jamais ce problème... dur dur
Dudu Posté 24 Mars 2006 Posté 24 Mars 2006 Bonjour Oui, mais cette règle évite de mettre un fichier index.htm vide dans chaque dossier, si on l'enlève sans le fichier index, il devient possible d'accéder au répertoire du site et ça j'aime pas trop. C'est très simple de faire cela, mais ça ne se fait pas avec un jeu de redirections. Cette simple ligne dans le .htaccess suffit Options -Indexes Tu peux aussi agir sur le listage des répertoires directement dans le fichier httpd.conf mais encore faut-il y avoir accès. Par exemple, si tu es en hégergement mutualisé tu n'as quasiment aucune chance d'y avoir accès. Sinon pour info, voilà comment on fait avec le fichier httpd.conf: il faut trouver la ligne Options FollowSymLinks Indexes et en enlever le mot "Indexes" ou carrément "commenter" la ligne avec un # si tu n'as pas besoin des liens symboliques.
yankey Posté 24 Mars 2006 Auteur Posté 24 Mars 2006 EXACT Merci beaucoup, ça marche, plus d'accès à l'arborescence du site. Est-ce que tu penses que c'est ça qui peut créer ce problème d'accès rencontré par ce visiteur?
Dan Posté 24 Mars 2006 Posté 24 Mars 2006 Ben oui Je pense que cela ne doit plus lui poser de problème maintenant !
yankey Posté 25 Mars 2006 Auteur Posté 25 Mars 2006 Bonjour, De mon côté j'ai effectivement constaté de mon côté une meilleure gestion des pages d'erreur , en tous cas plus d'accès répertoires. Mais j'ai demandé au visiteur de faire un nouveau test, je l'envoie sur cette page par exemple: http://www.el-annuaire-gratuit.com/annuair...uaires-135.html et la réponse est: "Nous sommes désolés, mais cette fois-ci nous n'avons plus rien du tout. La connexion du site nous répond qu'il est impossible d'afficher la page !" ... J'avoue que je débute avec le htaccess, sur un autre forum on m'a dit de chercher plutôt du côté de "serveur apache". Je me suis relu tout un doc sur la réecriture d'url, mais je ne trouve rien sur les pages php avec passages de valeurs qui ne fonctionnent pas puisqu'il n'accède même pas aux pages de type: http://www.el-annuaire-gratuit.com/annuair...num=0&idcat=135 ...
Jeanluc Posté 25 Mars 2006 Posté 25 Mars 2006 Bonjour yankey, Le fichier .htaccess n'est jamais lu par tes visiteurs. C'est un fichier interne au serveur Apache. Il agit donc exactement de la même façon pour tout le monde (sauf évidemment si tu y fais des tests sur le referrer, sur l'IP du visiteur ou sur d'autres facteurs dépendant de celui-ci). A mon avis, si ton visiteur voit autre chose que toi, le problème n'est probablement pas dans le .htaccess. Jean-Luc
yankey Posté 25 Mars 2006 Auteur Posté 25 Mars 2006 je ne fais pas de test de referer dans le fichier .htaccess mais j'ai fais bien sur un fichier .php qui me donne des stats ... est-ce que ça peut avoir un rapport ???
Dudu Posté 25 Mars 2006 Posté 25 Mars 2006 Bonjour, n'est-ce pas un problème de mémoire cache à vider (c'est probable si c'est toujours le même visiteur qui fait les tests d'autant qu'Internet Explorer Win a un cache très capricieux) Parce que, pour ma part, j'accède parfaitement à la page. Qu'elle soit réécrite ou non
yankey Posté 26 Mars 2006 Auteur Posté 26 Mars 2006 Hello, J'ai fais faire une série de tests aux visiteurs, et là, il me semble, qu'il y a un problème dans la transmission des valeurs par l'url, ou même que ça bloque le navigateur si on cherche à envoyer des valeurs par l'url ... il ne rentre pas ici: annuaire-annuaires-135.html ni ici: annuaire.php3?num=0&idcat=135 ni même ici: annuaire.php3 ni même sur cette page que j'ai crée spécialement pour tester sans php3: /page.php?num=0&idcat=135 En fait il ne rentre que sur ce type de page: internet.php3 mais sur ces pages là aucune valeur n'est transmise par les url... et ne sont pas de type $valeur, comme la pages de second niveau requête de type: "SELECT cat FROM t_cat where id=\"$log\"" Peut être que je dois rajouter un code pour forcer la récupération de GET, car je n'ai pas de code de ce type sur mes pages...
yankey Posté 29 Mars 2006 Auteur Posté 29 Mars 2006 j'ai dû dire une grosse bétise là ?... vu le silence que génère mon analyse... est-ce que vous pensez qu'il soit possible que cela vienne des valeurs transmises par l'url ? je n'ai pas trouvé d'article qui traite de ce genre de problème.
Dan Posté 29 Mars 2006 Posté 29 Mars 2006 Je pense que c'est parce qu'on ne comprend pas bien ce qu'a ton visiteur (ou sa config) Chez moi, l'URL de type http://www.el-annuaire-gratuit.com/annuair...uaires-135.html sort nickel. Idem sur l'outil du HUb, l'entête est "200 OK". Vas voir toi-même la page http://www.webmaster-hub.com/outils/http-viewer.php Difficile donc d'imaginer ce qui peut coincer chez lui... si ce n'est que je suis quasiment certain que c'est chez lui, et pas chez toi !
Dan Posté 29 Mars 2006 Posté 29 Mars 2006 Une question: as-tu accès aux logs Apache de ton site ? Parce que tu devrais facilement pourvoir identifier ses requêtes, et tenter de les répliquer chez toi.
yankey Posté 29 Mars 2006 Auteur Posté 29 Mars 2006 (modifié) oulà, ça devient très pointu là... j'ai regardé sur mon interface d'admin et sur le ftp, apparemment je n'ai pas accès à ces fichiers. Je suis en hébergement mutualisé de base. Je peux peut être les demander à l'hébergeur, mais bon, si vraiment personne ne voit ce qui peut se passer, si tant de gens ont contrôlés ces pages et n'ont pas rencontré de problème, je ne vais peut être pas perdre trop de temps avec ça non plus. Je ne suis pas maître, ni même vraiment informé, sur son type de connection, les firewalls, la configuration de sa machine, etc... Merci beaucoup à tous, j'ai un fichier .htaccess nickel maintenant et c'est génial. Modifié 29 Mars 2006 par yankey
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant