Aller au contenu

Sujets conseillés

Posté

Bonjour,

Je suis en train de développer un (petit) framework (sans prétentions hein !) et j'utilise un pseudo Rewriting PHP de ce style : ?/connexion.html qui envois la page de connexion (c'est index.php qui s'occupe de dispatcher les requêtes et d'apeller les bonnes pages).

Cependant j'aurai aimé pour ceux qui ont la possibilité d'avoir de l'url rewrite d'Apache d'avoir des url clean sans point d'interrogation.

C'est à dire, faire www.monsite.com/repertoire/mapage.html vers www.monsite.com/repertoire/?/mapage.html

Je tente depuis plusieurs heures de faire quelque chose qui marche mais en vain. Je me tourne donc vers vous, si vous avez une idée...

En gros c'est un truc comme ca que j'aimerais :

RewriteRule ^(.*)$ /?/$1 [L]

(mais ca marche pas :))

Merci pour votre attention.

Cordialement.

Posté

Si tu as accès à la config du serveur (plutôt que juste les .htaccess), il y a probablement plus simple avec un Alias ou ScriptAlias de / vers ton script, et ensuite tu récupères "le reste" via $_SERVER[PATH_INFO]. Je n'ai jamais fait ça avec un php, mais en perl ça marche très bien, donc je suppose que ça doit être jouable avec du php... Alternativement, une RewriteRule qui renvoie tout (.*) sur ton script, et ensuite tu dois bien pouvoir trouver l'URL originale quelque part dans $_SERVER (probablement REQUEST_URI ou quelque part par là...).

Jacques.

Posté (modifié)

Effectivement j'ai fais un truc un peut comme ça. Sauf que pour des raisons techniques je ne pouvais pas trop rajouter de code au niveau PHP.

Et donc, j'ai trouvé mon erreur : le $ ...

Pour tous deux qui souhaitent faire la même chose que moi à partir d'une pseudo redirection en /?/, voila ce qu'il faut comme htaccess :

RewriteEngine On
RewriteRule ^(.*).html http://www.monsite.com/index.php?/$1.html [QSA,L]

^(.*).html

-> Toutes les pages .html (vous pouvez faire d'autres lignes pour d'autres extensions, mais attention si votre répertoire de destination est le même qui contiens l'index.php, vous ne pouvez pas mettre de ^(.*).php sous peine de redirection en boucle...

http://www.monsite.com/index.php?/$1.html

-> Rien a dire de spécial à part que $1 sera remplacé par le nom du fichier caractérisé par (.*) sur l'expression d'avant.

[QSA,L]

-> QSA pour y ajouter les paramètres. C'est a dire ?/page.html?test=1 donnera au final index.php?/page.html&test=1

-> L s'arrêter a cette ligne lorsque l'expression régulière est bonne (je crois)

-> Vous pouvez aussi ajouter "R=30"1 pour faire une redirection 301 si vous le souhaitez

Voilà. Merci.

Cordialement

Modifié par samyghan

Veuillez vous connecter pour commenter

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



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