Rewriteurl : redirection fonctionne mais redirection transparente

Nouveau WRInaute
Bonjour à tous,

C'est mon premier post - et excusez-moi d'avance si le sujet a déjà été traité : j'ai cherché ici une réponse en vain.

Je cherche à faire quelque-chose de très simple, dont la solution est donné dans le tutoriel d'URL rewriting, ça a fonctionné, puis ça ne fonctionne maintenant que partiellement, je m'explique :

je souhaite que la page :
/forum/discussion-166-Musical-Advent-Calendar-Norwegian-Institute-of-Recorded-Sound.html

redirige sur :
/forum/discussion/discussionDetail.php?id=166

et j'ai le fichier .htaccess suivant :
Code:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^forum/discussion-([0-9]+)-(.*)\.html$ /forum/discussions/discussionDetail.php?id=$1 [L]

La redirection fonctionne : c'est à dire qu'en cliquant sur le lien /forum/discussion-166-Musical-Advent-Calendar-Norwegian-Institute-of-Recorded-Sound.html j'arrive bien sur la page /forum/discussions/discussionDetail.php?id=$1.

A ceci près que l'adresse affichée dans la barre d'url est /forum/discussions/discussionDetail.php?id=$1 et que je souhaiterais que pour le client, l'adresse reste bien /forum/discussion-166-Musical-Advent-Calendar-Norwegian-Institute-of-Recorded-Sound.html (redirection côté serveur).

Ca a pourtant marché, puis à la suite de je ne sais quelle modification, la redirection est désormais transparente pour l'utilisateur.

J'ai testé la redirection avec un outil de test qui m'indique une redirection 301.

Ai-je oublié quelque-chose ? Pour quelles raisons la redirection serait-elle nécessairement transparente pour l'utilisateur (drapeau oublié ? erreur de syntaxe ?)

Note : je suis chez 1&1 et le fichier .htaccess est bien pris en compte puisqu'une redirection est effectivement appliquée.

Merci d'avance pour votre lecture et vos réponses si vous en avez une !
 
WRInaute impliqué
Pas sur que le $ dans \.html$ /forum/ soit indispensable.
Pas sur non plus que le problème vienne de là, mais ça vaut le coup d'essayer sans :
Code:
RewriteRule ^forum/discussion-([0-9]+)-(.*)\.html /forum/discussions/discussionDetail.php?id=$1 [L]
 
Nouveau WRInaute
Merci pour cette réponse !

Effectivement, ça marche également sans le $ qui n'était pas indispensable, mais le problème reste le même, l'url affiché dans la barre d'adresse est : /forum/discussions/discussionDetail.php?id=$1, donc celui que je voudrais masquer.

J'ai bien vérifié (au cas-où !) : le lien sur lequel je clique est bien le lien "propre" : /forum/discussion-166-Musical-Advent-Calendar-Norwegian-Institute-of-Recorded-Sound.html
 
WRInaute impliqué
Bizarre...
C'est pas une bête histoire de cache ou de cookies chez toi ?
T'as effacé les cookies de ton site dans ton browser ?
Ou bien l'hébergeur a-t-il changé sans le dire un paramètre php ?
 
Nouveau WRInaute
Oui c'est vrai, j'aurais pu y penser, mais non, avec un cache vidé et cookies effacés, le problème est le même.

Je suis allé faire un tour sur les rubriques d'aide de 1&1, c'est drôle, leur section "aide" est inaccessible et affiche une erreur 500, décidément !

En attendant, ben je fais avec ma redirection 301 et mes jolis liens qui servent pas à grand-chose puisque salement redirigés !

Merci en tout cas de ton aide, et si jamais une autre idée te vient...
 
Nouveau WRInaute
En fait, c'est un peu comme si le drapeau [F] n'était pas pris en compte...
J'ai finalement pu accéder aux rubriques d'aides 1&1 sur les .htaccess :
Il est question du [F] qui si j'ai bien compris force la redirection à afficher que la page n'est pas autorisée, donc ça ne fait évidemment pas le job, en tout cas le drapeau est bien pris en compte, et d'autres drapeaux dont j'ignore la fonction précise mais qui ne semblent pas correspondre...

Et si c'est un paramètre php, je peux le voir dans le phpinfo() ? J'ai vu une ligne url_rewriter.tags mais qui ne me renseigne pas tellement...
 
WRInaute impliqué
Un dernier truc : essaie de mettre les URL en absolu dans la partie droite :
Code:
RewriteRule ^forum/discussion-([0-9]+)-(.*)\.html$ http://www.tonsite.tld/forum/discussions/discussionDetail.php?id=$1 [L]

Il me semble me souvenir qu'il faut ça chez certains hebergeurs ( mes sites chez 1&1 n'ont pas ca...) .

Mais essaie quand même
 
Nouveau WRInaute
Non plus, je suis allé faire un tour sur les headers avec l'outil de WRI, et j'ai le message suivant :

"Redirection multiple incorrecte (il n'y a pas que des 301) "

C'est à dire, j'ai successivement
Code:
HTTP/1.1 302 Found
Code:
HTTP/1.1 301 Moved Permanently
Code:
HTTP/1.1 200 OK

Pour une même requête.

Ca fait pas un peu trop ?

----
Edit
----
j'ai effacé le fichier .htaccess et l'ai réécrit (des fois que des caractères cachés trainent par là), exactement de la même manière. J'ai désormais un
Code:
HTTP/1.1 301 Moved Permanently
Code:
HTTP/1.1 200 OK
 
WRInaute impliqué
Tu as 2 lignes successives dans l'entete http ?

Une :
HTTP/1.1 200 OK
et une autre dessous avec
HTTP/1.1 301 Moved Permanently ?

Si c'est ca il fait peut-être plus de 2 lignes ton htaccess, ou bien un 2e htaccess existe, dans un dossier au-dessus ou au-dessous ?
Mes sites rewrités donnent tous un code 200 quand je teste un url rewrité.

Et essaie aussi de faire l'inverse pour les chemins (virer /forum/) :
Code:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^discussion-([0-9]+)-(.*)\.html /discussions/discussionDetail.php?id=$1 [L]
 
Nouveau WRInaute
alaincassis a dit:
Et essaie aussi de faire l'inverse pour les chemins (virer /forum/) :
CODE: TOUT SÉLECTIONNER
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^discussion-([0-9]+)-(.*)\.html /discussions/discussionDetail.php?id=$1 [L]

Pas de succès.

J'ai testé en local (avec MAMP), et le même .htaccess : ça marche, l'URL n'est pas réécrite mais c'est bien la page définie dans le htaccess qui est affichée.

J'en conclus donc qu'il doit s'agir de paramètres du serveur propres à 1&1 (il faut croire)...
 
WRInaute impliqué
J'avais vu sur un forum (ici ?) le même genre de problème. Mettre des chemins relatifs et pas absolus -ou l'inverse- dans le htaccess pour certains hebergeurs, avait résolu le problème.
Donc faut tout essayer de ce coté !
Pourtant j'ai quelques sites chez 1&1, et les htaccess sont comme le tien, et ils fonctionnent.
Peurt-être tout simplement un coup de fil à leur hot-line, ils répondent vite, résoudrait ton souci, puisque ton htaccess fonctionne !
 
Nouveau WRInaute
:roll:
Eh bien voilà, la réponse a été trouvée (non pas par la hotline qui n'a pas su me renseigner) tout à fait par hasard, mais à force de recopier méthodiquement ce .htaccess, ça allait finir par venir :

je me suis trompé dans l'orthographe de mon lien (partie droite de la rewriteRule) :
/forum/discussions/discussionDetail.php?id=$1 [L]
au lieu de
/forum/discussion/discussionDetail.php?id=$1 [L]

Et au lieu d'afficher une erreur 404, la redirection était forcée sur la bonne URL (1&1 active par défaut la correction d'url, qui se désactive au passage via le .htaccess en ajoutant une ligne CheckSpelling off).

C'est par contre un comportement étrange : puisque la correction est activée et que la redirection se faisait bien, je ne m'explique pas pourquoi la redirection ne se faisait pas côté serveur (enfin je le devine, tout de même).

Merci beaucoup en tout cas de t'être penché sur mon cas, et pour tes réponses !
 
Discussions similaires
Haut