Aller au contenu

Sujets conseillés

Posté

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 ... :)

Posté

Bonjour Yankey,

ErrorDocument 401 /404.php
ErrorDocument 403 /404.php
ErrorDocument 404 /404.php

RewriteEngine On
Options +FollowSymlinks
RewriteRule ^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

Posté (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é par yankey
Posté

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 ... :blink:

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à :unsure:

Posté
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 ? :hypocrite:

Dan

Posté

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 :huh:

Posté

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.

Posté

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?

Posté

Ben oui :)

Je pense que cela ne doit plus lui poser de problème maintenant !

Posté

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 :huh: puisqu'il n'accède même pas aux pages de type:

http://www.el-annuaire-gratuit.com/annuair...num=0&idcat=135 ...

Posté

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

Posté

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 ???

Posté

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 ;)

Posté

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... :unsure:

Posté

:blush: 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.

Posté

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 !

Posté

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.

Posté (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. :D

Modifié par yankey

Veuillez vous connecter pour commenter

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



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