Simple url rewriting qui ne fonctionne pas
Résolu/Fermé
A voir également:
- Simple url rewriting qui ne fonctionne pas
- Lien url - Guide
- Iphone 14 simple - Guide
- Url masquée pour votre sécurité - Forum Programmation
- Atlas pro url serveur invalide - Forum TV & Vidéo
- Simple ocr - Télécharger - Bureautique
2 réponses
trigone7
Messages postés
5
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
3 septembre 2015
1
Modifié par trigone7 le 25/11/2011 à 10:58
Modifié par trigone7 le 25/11/2011 à 10:58
C'est normal, cette syntaxe de RewriteRule ne peut marcher QUE pour index.php.
"^" veut dire "qui commence par", et "$" veut dire "qui finit par". Donc :
- "^/$ index.php" veut dire :
rediriger la page "/" vers index.php
- "^/$ radios.php /logiciel-pour-ecouter-les-radios-en -direct" veut dire :
rediriger la page "/" vers radios.php (et les paramètres qui suivent sont ignorés car faux)
- "^/$ podcasts.php /logiciel-pour-ecouter-les-podcasts-en -direct" veut dire :
rediriger la page "/" vers podcasts.php (et les paramètres qui suivent sont ignorés car faux)
Sauf que "/" est DEJA redirigé vers index.php avec la 1re règle et le paramètre "[L]" (qui veut dire "ne plus appliquer de règles pour cette même condition"), donc la 2e et la 3e sont ignorées (et en plus, elles sont fausses)...
La version correcte est :
RewriteRule ^/$ index.php [L]
RewriteRule ^radios.php$ /logiciel-pour-ecouter-les-radios-en-direct [L]
RewriteRule ^podcasts.php$ /logiciel-pour-ecouter-les-podcasts-en-direct [L]
Evite aussi les espaces n'importe où, qui cassent ton URL (dans ton exemple, il y avait un espace entre "radios" et "-en-direct" et entre "podcasts" et "-en-direct").
Si tu ne comprends pas la syntaxe des instructions, apprends-la ici, ça t'aurait évité de passer 2 nuits sur un problème tout simple :
(fr) https://www.webmaster-hub.com/publications/mod_rewrite-ou-la-reecriture-des-url-a-la-volee/
(en) https://www.askapache.com/htaccess/
"^" veut dire "qui commence par", et "$" veut dire "qui finit par". Donc :
- "^/$ index.php" veut dire :
rediriger la page "/" vers index.php
- "^/$ radios.php /logiciel-pour-ecouter-les-radios-en -direct" veut dire :
rediriger la page "/" vers radios.php (et les paramètres qui suivent sont ignorés car faux)
- "^/$ podcasts.php /logiciel-pour-ecouter-les-podcasts-en -direct" veut dire :
rediriger la page "/" vers podcasts.php (et les paramètres qui suivent sont ignorés car faux)
Sauf que "/" est DEJA redirigé vers index.php avec la 1re règle et le paramètre "[L]" (qui veut dire "ne plus appliquer de règles pour cette même condition"), donc la 2e et la 3e sont ignorées (et en plus, elles sont fausses)...
La version correcte est :
RewriteRule ^/$ index.php [L]
RewriteRule ^radios.php$ /logiciel-pour-ecouter-les-radios-en-direct [L]
RewriteRule ^podcasts.php$ /logiciel-pour-ecouter-les-podcasts-en-direct [L]
Evite aussi les espaces n'importe où, qui cassent ton URL (dans ton exemple, il y avait un espace entre "radios" et "-en-direct" et entre "podcasts" et "-en-direct").
Si tu ne comprends pas la syntaxe des instructions, apprends-la ici, ça t'aurait évité de passer 2 nuits sur un problème tout simple :
(fr) https://www.webmaster-hub.com/publications/mod_rewrite-ou-la-reecriture-des-url-a-la-volee/
(en) https://www.askapache.com/htaccess/
Bonsoir,
Avant tout merci pour la réponse et les explications.
Avec ton code j'ai pu résoudre le problème. Voilà le code fonctionnel:
ce qui m'a induit en erreur et qui fait que je n'ai pas compris la notion de la réécriture c'est que je pensais que avec <a href="radios.php" >Radios</a> en cliquant sur "Radios", le navigateur affiche la page "radios.php, et Apache s'occupe d'écrire dans la barre d'adresse "..../logiciel-pour-ecouter-les-radios-en-direct"
Il fallait écrire <a href="logiciel-pour-ecouter-les-radios-en-direct" >Radios</a> pour que le navigateur affiche la page "radios.php" après que apache ait remplacé la chaine par radios.php et lui a 'dit' d'aller chercher le fichier "radios.php"
Je me trompe encore ??
Ps: l'espace dans les url ce n'est pas de mes habitudes, plutôt un accident de copier/coller
Encore merci infiniment.
Avant tout merci pour la réponse et les explications.
Avec ton code j'ai pu résoudre le problème. Voilà le code fonctionnel:
RewriteRule ^logiciel-pour-ecouter-les-radios-en-direct$ /radios.php [L] RewriteRule ^logiciel-pour-ecouter-les-podcasts-en-direct$ /podcasts.php [L]
ce qui m'a induit en erreur et qui fait que je n'ai pas compris la notion de la réécriture c'est que je pensais que avec <a href="radios.php" >Radios</a> en cliquant sur "Radios", le navigateur affiche la page "radios.php, et Apache s'occupe d'écrire dans la barre d'adresse "..../logiciel-pour-ecouter-les-radios-en-direct"
Il fallait écrire <a href="logiciel-pour-ecouter-les-radios-en-direct" >Radios</a> pour que le navigateur affiche la page "radios.php" après que apache ait remplacé la chaine par radios.php et lui a 'dit' d'aller chercher le fichier "radios.php"
Je me trompe encore ??
Ps: l'espace dans les url ce n'est pas de mes habitudes, plutôt un accident de copier/coller
Encore merci infiniment.