Chemins et rewritecond .htaccess

WRInaute impliqué
Hello,
Je me demandais si il existe un moyen de verifier par .htaccess que le chemin demandé dans l'url existe bien.
Je m'explique, si j'utilise un règle type :
Code:
RewriteRule [.]*-sujet([0-9]*) /sujet.php?%{QUERY_STRING}&f=$1

une requète du type http://example.com/titre-sujetxx.html reverra a la même page que http://example.com/blabli/titre-sujetxx.html
alors que blabli/ n'existe pas.
Du coup j'ai bien essayé en comparant {REQUEST_URI} et {PATH_INFO} dans un rewrite cond, mais ça ne marche pas.

Donc voilà, s'il existe un moyen de verifier que tout ce qui se trouverait entre / (ou /dossier/ avec un rewritebase dossier/) et / dans l'url (blabli se trouve entre / et / ( ou /dossier/ et /)) soit verifié comme faisant bien partie de l'arborescence du site, je suis preneur.

++
 
WRInaute impliqué
ya plein de façon de faire, mais pas par htaccess:
-récupère le $1, et fait un petit script php sur ta page afin de vérifier cela.
 
WRInaute impliqué
J´oubliais:
tu peux faire avec le .htaccess, mais c´est vraiment pas pratique:
RewriteCond %{REQUEST_URI} /(lesrépertaoires|...|...|...) [NC]

Mais il faut rajouter à chaque création de répertoire....
 
WRInaute impliqué
correiaj a dit:
J´oubliais:
tu peux faire avec le .htaccess, mais c´est vraiment pas pratique:
RewriteCond %{REQUEST_URI} /(lesrépertaoires|...|...|...) [NC]

Mais il faut rajouter à chaque création de répertoire....

Ca c'est vraiment très gentil, et en passant heureusement que tu as posté deux fois, parce que j'ai pas eu le premier mail lol.

Enfin, je vais testé cela de suite.
Par contre, je suis loin d'être suffisamment callé, même si je progresse, en php pour bine comprendre ce que tu évoques à propos de récuperer $1 et de voir ...

++

Et merci pour ce code
 
WRInaute impliqué
ben au lieu de faire:
RewriteRule [.]*-sujet([0-9]*) /sujet.php?%{QUERY_STRING}&f=$1
fait:
RewriteRule(.*)-sujet([0-9]*) /sujet.php?%{QUERY_STRING}&f=$2&URL=$1

$1 te donnera le chemin comp`let demandé.
Après il suffit de faire un teste de la variable $_GET['url'] pour savoir s´il faut exécuter le script, ou renvoyer sur une 404...
du style:
$tes_url=$_GET['url'];
if($test_url=='rep' ou ça ou ça)
{ script de la page}
else
{
renvoie sur une 404..
}
 
WRInaute impliqué
arf toujours pas

En fait (j'espère que c pas à cause de easyphp) mais je ne tire rien de 'URL', $HTTP_GET_VARS['URL'] ni $_GET['URL'], du coup pas de test possible.
"URL" est censé être remplis par apache c'est ça?
ou me trompe-je?

Du coup j'ai pas avancé sur les critères qui suivent, je suis pas sur que if($test_url=='rep' ou ça ou ça) suffira, vu que /vraidossier/ est présent dans les deux url (le bonne et la mauvaise), mais il doit y avoir moyen de tester si il n'ay aurait pas un deuxieme "/" après /vraidossier/ vu que je me passe de "/" dans mes titres ;)

Enfin, voili, si tu as encore une tite idée ...

++
 
WRInaute impliqué
Arf, j'ai beau prendre le problème dans tous les sens, pas moyen de trouver un truc qui marche, ni par .htaccess ni en php, franchement j'ai besoin d'un tit coup de mains sur ce coup...


++
 
WRInaute impliqué
franchement, si tu as d´autres règles, peut être la variable URL en GET est supprimée par apache.
Mais je ne vois pas trop comment t´aider, car je ne sais rien de ce qui se passe chez toi ;-)
En tout cas, essaie de comprendre pourquoi les GET ne passent pas.
 
WRInaute impliqué
correiaj a dit:
franchement, si tu as d´autres règles, peut être la variable URL en GET est supprimée par apache.
Mais je ne vois pas trop comment t´aider, car je ne sais rien de ce qui se passe chez toi ;-)
En tout cas, essaie de comprendre pourquoi les GET ne passent pas.

Yep, je suis toujours sur le coup, mais bon pas encore trouvé...

Je poste dès que je trouve.

++
 
Discussions similaires
Haut