Page 1 sur 1

Règle de réécriture d'URL dans mon .htaccess

Posté : 12 sept. 2015, 03:14
par albat
Bonjour,

Ça faisait un moment que je n'avais pas codé et, si HTML, CSS, PHP,... reviennent vite,
les REGEX pour les redirections Apache, en revanche, c'est pas comme le vélo : ça s'oublie. :cry:

Je souhaite réécrire mes URL sous cette forme :

presentation/edito-1.htm <==> index.php?p=11&n=1

Précisions :
- 'presentation' est un dossier virtuel, présent dans l'URL réécrite mais qui n'existe pas physiquement.
- le nombre final de l'URL réécrite est le paramètre 'n'

J'ai composé la rgèle de réécriture suivante :
RewriteRule ^(\S*)(\/?)edito-([0-9]+)\.htm$       /index.php?p=11&n=$1  [L]
Mais ça marche pas.
Aurais-je merdoyé quelque part ?

Merci !

Re: Règle de réécriture d'URL dans mon .htaccess

Posté : 12 sept. 2015, 10:08
par @rthur
Effectivement, tu as merdoyé quelque part ;-)
Ta règle actuelle fait ça :
presentation/edito-1.htm <==> index.php?p=11&n=presentation/
Tu utilises des parenthèses capturantes pour récupérer des choses que tu n'utilises pas ensuite.
2 possibilités :
- soit tu dégages les parenthèses inutiles
- soit tu les transformes en parenthèses non-capturantes, c'est à dire en ajoutant "?:" après la parenthèse ouvrante, ce qui donne (?:

Voici un site bien pratique pour tester ses règles htaccess :
http://htaccess.madewithlove.be

Re: Règle de réécriture d'URL dans mon .htaccess

Posté : 12 sept. 2015, 10:15
par @rthur
Et pour la peine, te voila obligé de faire le niveau intermédiaire de :
hors-sujet/mots-croises-avec-regex-t273082.html

Re: Règle de réécriture d'URL dans mon .htaccess

Posté : 12 sept. 2015, 12:45
par albat
Indeed !

Au fil des tâtonnements et des corrections successives,
je n'avais pas prêté attention à ces parenthèses qui restaient.
Mea culpa...

Bon, ça marche pas malgré cette correction.
Doit y avoir un autre schmurtz, Je continue de chercher.

Merci !

PS : Affreux, tes mots croisés !

Re: Règle de réécriture d'URL dans mon .htaccess

Posté : 12 sept. 2015, 13:37
par albat
Bon, j'ai opté pour cette écriture :
RewriteRule ^[a-z]*\/?edito-([0-9]+)\.htm$       /index.php?p=11&n=$1  [L]
mais les paramètres $_GET['p'] et $_GET['n'] ne sont pas transmis.

Je creuse...

Re: Règle de réécriture d'URL dans mon .htaccess

Posté : 12 sept. 2015, 15:08
par albat
Le testeur de https://regex101.com/ me dit que j'ai tout bon,
mais les paramètres ne passent pas.

Re: Règle de réécriture d'URL dans mon .htaccess

Posté : 12 sept. 2015, 15:18
par or 1
ils passent mieux si c'est l'url index.php?p=11&n=$1 qui est appelée directement ?

Re: Règle de réécriture d'URL dans mon .htaccess

Posté : 12 sept. 2015, 16:20
par albat
J'ai trouvé !!!

J'ai un peu honte de l'avouer, mais... j'avais merdé dans le RewriteBase. :oops:

Merci pour votre aide ! ;)