Simple url rewriting qui ne fonctionne pas

Résolu/Fermé
KL - 25 nov. 2011 à 00:38
 KL - 25 nov. 2011 à 21:56
Bonsoir,

J'espère que quelqu'un pourra m'aider à fin que je puisse passer à autre chose, ça fait deux nuits que je suis au point d'arrêt.
J'essaye de réécrire mes url et je n'y arrive pas... pourtant ça devrait être assez simple je n'utilise pas des conditions complexes ou des expressions régulières.
Ce la ne fonctionne ni en local avec WAMP ni sur serveur chez Bluehost.
url1 :
www.monsite.net/index.php en www.monsite.net/
url2 :
www.monsite.net/radios.php en www.monsite.net/logiciel-pour-ecouter-les-radios-en -direct
url3:
www.monsite.net/podcasts.php en www.monsite.net/logiciel-pour-ecouter-les-podcasts-en -direct
J'essaye ceci:
########## Les deux premières lignes ajoutées automatiquement et je n'y ai pas touché ########
# Use PHP5 Single php.ini as default
AddHandler application/x-httpd-php5s .php

######### Ces lignes sont prises de la doc bluehost : #################
######### https://my.bluehost.com/cgi/help/357 #################
# Do not change this line.
RewriteEngine on
# Don't change these line.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

######### ADDED BY MYSELF #################
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]



Merci pour votre aide.
A voir également:

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
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/
0
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:
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.
0