Rewriteurl : redirection fonctionne mais redirection transparente

Discussion dans 'URL Rewriting et .htaccess' créé par alea7, 14 Février 2012.

  1. alea7

    alea7 Nouveau WRInaute

    Inscrit:
    14 Février 2012
    Messages:
    8
    J'aime reçus:
    0
    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 !
     
  2. alaincassis

    alaincassis WRInaute impliqué

    Inscrit:
    6 Août 2006
    Messages:
    567
    J'aime reçus:
    0
    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]
     
  3. alea7

    alea7 Nouveau WRInaute

    Inscrit:
    14 Février 2012
    Messages:
    8
    J'aime reçus:
    0
    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
     
  4. alaincassis

    alaincassis WRInaute impliqué

    Inscrit:
    6 Août 2006
    Messages:
    567
    J'aime reçus:
    0
    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 ?
     
  5. alea7

    alea7 Nouveau WRInaute

    Inscrit:
    14 Février 2012
    Messages:
    8
    J'aime reçus:
    0
    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...
     
  6. alea7

    alea7 Nouveau WRInaute

    Inscrit:
    14 Février 2012
    Messages:
    8
    J'aime reçus:
    0
    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...
     
  7. alaincassis

    alaincassis WRInaute impliqué

    Inscrit:
    6 Août 2006
    Messages:
    567
    J'aime reçus:
    0
    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
     
  8. alea7

    alea7 Nouveau WRInaute

    Inscrit:
    14 Février 2012
    Messages:
    8
    J'aime reçus:
    0
    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
     
  9. alaincassis

    alaincassis WRInaute impliqué

    Inscrit:
    6 Août 2006
    Messages:
    567
    J'aime reçus:
    0
    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]
     
  10. alea7

    alea7 Nouveau WRInaute

    Inscrit:
    14 Février 2012
    Messages:
    8
    J'aime reçus:
    0
    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)...
     
  11. alaincassis

    alaincassis WRInaute impliqué

    Inscrit:
    6 Août 2006
    Messages:
    567
    J'aime reçus:
    0
    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 !
     
  12. alea7

    alea7 Nouveau WRInaute

    Inscrit:
    14 Février 2012
    Messages:
    8
    J'aime reçus:
    0
    :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 !