Messages: 149

Enregistré le: 14 Mai 2005

Message le Mar Aoû 23, 2016 18:50

Bonjour,
par exemple j'ai une URL du type
/page.php

si un petit malin tape
/page.php/nimportequoi ou /page.php/ ou /page.php?nimportequoi enfin bref que soit rajouter quelque chose apres l'url

j'aimerai que ca redirige soit
- vers un 404 ( ca me plait pas trop)
- soit vers page.php (plus souhaitable)
évidemment pour toutes les pages
j'ai aussi une section du site avec un repertoire
(/repertoire/page.php) donc meme genre de redirection avec un repertoire nommé repertoire

je n'utilise pas de cms ni de variables d'url en post ou get dans mon site

quelqu'un aurais une solution avec .htaccess ? parce que je cherche depuis un petit moment et je suis un noob en htaccess

Merci d'avance
Haut
7 Réponses
Messages: 12288

Enregistré le: 23 Nov 2005

Message le Mer Aoû 24, 2016 15:29

Ca serait davantage à gérer via PHP, dans l'entête de tes pages.
Haut
Messages: 266

Enregistré le: 6 Juin 2009

Message le Mer Aoû 24, 2016 15:43

Pour le faire en une minute avec un 404, faire un .htaccess avec dedans :

Code: Tout sélectionner
<Files .htaccess>
order allow,deny
deny from all
</Files>

ErrorDocument 404 http://www.domaine.com/404.html


Mais c'est vrai que ce serait mieux, et plus précis, en modifiant page.php mais c'est aussi plus compliqué.
Haut
Messages: 149

Enregistré le: 14 Mai 2005

Message le Mer Aoû 24, 2016 19:25

@elji
j'ai déjà mon 404 défini dans mon .htaccess . Apache considère ces URL comme valides (paramêtre d'url) et donc ne transmettra jamais une erreur 404.

UsagiYojimbo
si tu pouvais m'en dire un peu plus. Pas moyen avec htaccess de rediriger quand un slash est ajouté après .php ?
genre
^(.*)\.php/(.*)$ qui redirige vers $1\.php
Haut
Messages: 12288

Enregistré le: 23 Nov 2005

Message le Mer Aoû 24, 2016 19:47

Tu n'es pas obligé d'ajouter un / pour tester l'inclusion de paramètres.
Haut
Messages: 149

Enregistré le: 14 Mai 2005

Message le Mer Aoû 24, 2016 21:01

Ok mais comme je rame (j'ai déjà essayé plusieurs truc avec une belle erreur 500) ta réponse ne m'aide pas vraiment
une solution serait plus appréciable que des commentaires
Haut
Messages: 12288

Enregistré le: 23 Nov 2005

Message le Jeu Aoû 25, 2016 11:59

En fait je pense que tu as mal compris mon commentaire.

Parce qu'une règle ciblant .php/ permettra de résoudre

/page.php/nimportequoi
/page.php/

mais pas

/page.php?param=toto.

D'où l'intérêt de passer par le code :

-> tu récupère l'url via $_SERVER['REQUEST_URI']
-> tu vérifies (via ta base de donnée, via ce que tu sais de tes url) si la request uri est autorisée ou pas
-> si elle ne l'est pas, tu renvoies une entête 404
Haut
Messages: 149

Enregistré le: 14 Mai 2005

Message le Jeu Aoû 25, 2016 18:08

Résolu avant ton dernier message
via entête en php
explode sur le $_SERVER['REQUEST_URI'] avec comme délimiter .php
[0] me donne l'uri (sans le .php)
[1] me donne la suite après .php (si c'est le cas)
si [1] n'est pas vide redirection vers la page en cours header(location) en me servant de la valeur de [0] et en rajoutant .php
voila
Haut