Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Serveurs (Apache, IIS,...) > Apache
Apache Forum d'entraide Apache. Avant de poster : Cours Apache, FAQ Apache
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/09/2008, 18h56   #1
Membre du Club
 
Inscription : mai 2006
Messages : 137
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2006
Messages : 137
Points : 52
Points : 52
Par défaut impossible de renvoyer un code 404

bonjour,
j'ai fait un site dynamique php/mysql avec réécriture d'url.
Chaque page est stockée dans la base de données, et est appelée par deux paramètres : catégorie et url. Le problème c'est que si je mets à la racine du site n'importe quel paramètre (ex: /?xyz=234) ça charge la page d'accueil alors que cela doit renvoyer un code 404. Merci de votre aide. Le site en question : http://chinesecarweb.com
__________________
http://yvonh.com
yvonh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2008, 19h12   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
D'accord mais si on pouvait savoir aussi comment, concrètement, vous avez mis cette solution en place, ça serait tout de suite beaucoup plus facile d'en rechercher la cause, non ?
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2008, 19h41   #3
Membre du Club
 
Inscription : mai 2006
Messages : 137
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2006
Messages : 137
Points : 52
Points : 52
voici le fichier .htaccess

Code :
1
2
3
4
5
6
7
RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ^www\.chinesecarweb\.com$
RewriteRule ^(.*)$ http://chinesecarweb.com/$1 [R=301,L]

RewriteRule ^(.*)/(.*)/$ post/post.php?cat=$1&sefurl=$2
J'espère que c'est suffisant merci.
__________________
http://yvonh.com
yvonh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2008, 20h01   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Je ne suis pas certain d'avoir compris mais la partie query string, ne peut à elle seule, pas générer une erreur 404. Ce ne sont que des paramètres facultatifs (voire même superflus) fournis à une ressource. C'est l'absence même de la ressource qui provoque une erreur 404, rien d'autre.

Donc ici il doit manquer des règles si vraiment vous souhaitez interdire ces cas et les gérer par une 404 (ce qui requiert, par la même occasion, une version 2 d'Apache car avec les versions antérieures les erreurs qu'il était possible de renvoyer à l'aide du module de réécriture étaient très restreint).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2008, 22h30   #5
Membre du Club
 
Inscription : mai 2006
Messages : 137
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2006
Messages : 137
Points : 52
Points : 52
Je pose cette question car le Googlebot fait des interrogation arbitraire pour explorer mon site. Il met par exemple après l'url de base ?p=123 pour "essayer" d'atteindre une page. C'est en observant les logs que j'ai découvert la chose.
Je ne suis que débutant sur les url rewrite et je suis certain de ne pas le faire correctement. Question que manque-til pour rediriger vers une page spécifique ou renvoyer une erreur?
__________________
http://yvonh.com
yvonh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2008, 18h05   #6
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
C'est faisable mais ça risque d'être strict (cela voudrait dire que vous n'aurez jamais d'autres paramètres que cat et sefurl) :
Code :
1
2
3
RewriteCond %{QUERY_STRING} !^$
RewriteCond %{QUERY_STRING} !^cat=[^&]+&sefurl=[^&]$
RewriteRule .* - [R=404,L]
(non testé, requiert une version 2.X, comme dit plus haut et à placer en dernier a priori)
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2008, 11h07   #7
Membre du Club
 
Inscription : mai 2006
Messages : 137
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2006
Messages : 137
Points : 52
Points : 52
La version d'apache de mon hébergeur est : Apache/1.3.34 Ben-SSL/1.55.
En allant sur cette page :http://httpd.apache.org/docs/2.0/new_features_2_0.html
je ne trouve rien sur mod_rewrite.. Pourquoi ça ne marcherait pas sur 1.X?
ça n'a pas marché.
__________________
http://yvonh.com
yvonh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2008, 11h50   #8
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Parce que le module de réécriture, sous ces versions, était prévu (codé) pour n'accepter et gérer que le renvoi d'erreurs dont le code est situé dans la plage 300 (inclus) à 400 (exclus) - définis, par le protocole HTTP, pour les redirections.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h32.


 
 
 
 
Partenaires

Hébergement Web