[RESOLU] Réécriture, redirection et R301

Discussion dans 'URL Rewriting et .htaccess' créé par teog, 22 Octobre 2007.

  1. teog
    teog Nouveau WRInaute
    Inscrit:
    22 Octobre 2007
    Messages:
    5
    J'aime reçus:
    0
    Bonjour,

    Voilà mon soucis :
    J'aimerai effectuer une réécriture d'adresse de pages qui sont déja référencées.
    Le but étant que l'utilisateur voit article-XX.html dans sa barre d'adresse au lieu de article.php?id=XX. (en gardant mon fichier nommé article.php, normal :) )

    donc j'ai (naïvement) fait ça :

    Code:
    #Reecriture
    RewriteRule ^article-(.*).html$ article.php?id=$1
    
    #Redirection
    RewriteRule ^article.php?id=(.*)$ article-$1.html [R=301] 
    
    La redirection marche mais je ne sais pas si le R301 est correcte et donc si je ne perdrai pas mon référencement.

    J'ai fait un test de mon entête et j'ai comme réponse un simple HTTP/1.0 200 OK , devrais-je avoir un HTTP/1.1 301 ???

    aussi, y-a t-il un moyen pour que si l'on tape www.monsite.fr/article.php?id=12 on tombe sur cette meme page mais avec l'url = www.monsite.fr/article-12.html ?

    Qu'en pensez vous ?
     
  2. webmasterlamogere
    webmasterlamogere WRInaute passionné
    Inscrit:
    17 Décembre 2006
    Messages:
    1 647
    J'aime reçus:
    1
    les paramètres ne marchent pas comme ca. il faut utiliser un truc du style :
    Code:
    RewriteCond %{QUERY_STRING} ^id=(.*)$
    RewriteRule ^article\.php$ article-%1.html [R=301] 
     
  3. teog
    teog Nouveau WRInaute
    Inscrit:
    22 Octobre 2007
    Messages:
    5
    J'aime reçus:
    0
    Déjà, Merci pour ta réponse ! :D
    En effet il faut une condition,
    le fait est que maintenant le R301 est pris en compte mais ne fait pas ce que je voudrais qu'elle fasse.
    J'ai essayé ca :

    Code:
    #Reecriture
    RewriteRule ^article-(.*).html$ article.php?id=$1
    
    #Redirection
    RewriteCond %{QUERY_STRING} ^id=(.*)$
    RewriteRule ^article\.php$ http://www.monsite.fr/article-%1.html [R=301]
    pour l'adresse www.monsite.fr/article-xx.html, je suis redirigé vers www.monsite.fr/article-xx.html?id=xx

    même redirection si je tape www.monsite.fr/article.php?id=xx
    et pour les deux un petit message : "Redirection de page incorrecte" ...
     
  4. webmasterlamogere
    webmasterlamogere WRInaute passionné
    Inscrit:
    17 Décembre 2006
    Messages:
    1 647
    J'aime reçus:
    1
    Je pense que quelque chose comme ca devrait marcher :
    Code:
    #Reecriture
    RewriteRule ^article-(.*)\.html$ /article2.php?id=$1 [L]
    #Redirection
    RewriteCond %{QUERY_STRING} ^id=(.*)$
    RewriteCond %{REQUEST_URI} !html$
    RewriteRule ^article\.php$ /article-%1.html? [R=301,L]
    
    En renommant article.php en article2.php ca marche (sinon ca boucle et je ne comprend pas pourquoi car il y a un [L]).
     
  5. teog
    teog Nouveau WRInaute
    Inscrit:
    22 Octobre 2007
    Messages:
    5
    J'aime reçus:
    0
    Je viens de tester ce bout de code et effectivement ca boucle.

    La redirection marche au niveau de l'url, mais on arrive sur une page d'erreur "Redirection de page incorrecte"

    La redirection a du coup beaucoup moins d'intéret si on renome article.php.

    Tout comme toi je ne comprends pas pourquoi ca boucle par rapport au [L], mais il me semble que les conditions laissent passer article-xx.html , même si ça devrait s'arreter avant ... :?

    Je continu de chercher de mon coté mais...
    Moi pas bien comprendre...
    Vous avoir idée ?
     
  6. teog
    teog Nouveau WRInaute
    Inscrit:
    22 Octobre 2007
    Messages:
    5
    J'aime reçus:
    0
    Je me fait doucement aux principes de réecriture ... donc en fait le problème est clair maintenant (pour moi)

    j'ai refait mon code ... c'est la même chose, mais bon, je le met quand même :
    Code:
    #Reecriture
    RewriteRule article-([0-9]+)\.html$ article.php?id=$1 [L]
    #Redirection
    RewriteCond %{REQUEST_URI} ^.*\.php$
    RewriteCond %{QUERY_STRING} ^id=([0-9]+)$
    RewriteRule ^article\.php$ http://www.monsite.fr/article-%1.html? [R=301] 
    
    Le probleme viens exclusivement du fait que la lecture du .htaccess ne s'arrete pas apres :

    Code:
    RewriteRule article-([0-9]+)\.html$ article.php?id=$1 [L]
    Deplus, la condition :
    Code:
    RewriteCond %{REQUEST_URI} !html$
    ou
    Code:
    RewriteCond %{REQUEST_URI} ^.*\.php$
    est, je crois, toujours valide car après la récriture (peut importe l'url tapé), c'est la version en ".php" qui arrive à la condition. Je fais fausse route ?

    Ca ne résous pas pour autant le problème, mais au moins c'est plus clair...
     
  7. webmasterlamogere
    webmasterlamogere WRInaute passionné
    Inscrit:
    17 Décembre 2006
    Messages:
    1 647
    J'aime reçus:
    1
    Je ne trouve pas la solution. C'est un problème pour un pro du rewritting.
     
  8. teog
    teog Nouveau WRInaute
    Inscrit:
    22 Octobre 2007
    Messages:
    5
    J'aime reçus:
    0
    J'ai "bricolé" une solution ...
    Comme on peux pas faire de compteur de boucle j'ai fait un marqueur qui dit "le lien est réécrit", voici donc le code qui marche :

    Code:
    #Reecriture
    RewriteRule article-([0-9]+)\.html$ article.php5?id=$1&- [L]
    #Redirection
    RewriteCond %{QUERY_STRING} ^id=([0-9]+)$
    RewriteRule ^article\.php5$ http://www.fundraisers.fr/test/article-%1\.html? [R=301]
    
    J'ai rajouté &- juste avant le [L] ce qui fait que l'url rewrité ne répond plus la condition de redirection et ceci n'influx pas sur l'adresse de la page.

    C'est pas très propre mais ça marche !!!

    Merci en tout cas webmasterlamogere pour ton aide !

    Je marque la discussion comme RESOLU, étant donné que ça marche.
    Mais ce n'est pas une "vraie" solution à ce problème et vous pouvez d'ailleur toujours en proposers une !
     
Chargement...
Similar Threads - [RESOLU] Réécriture redirection Forum Date
[RESOLU] réécriture avec 1 parametre=> OK, et avec 2 paramètres, ça coince ! URL Rewriting et .htaccess 16 Janvier 2011
[résolu] Gérer la réécriture sur un répertoire temporaire URL Rewriting et .htaccess 21 Mars 2010
[Résolu] Slash refusé dans une règle de réécriture URL Rewriting et .htaccess 5 Novembre 2009
Problème de réécriture [RESOLU] URL Rewriting et .htaccess 27 Juin 2008
[RESOLU] empecher la réécriture dans un repertoire ? URL Rewriting et .htaccess 1 Mars 2008
[RESOLU] Réécriture ET Duplicate Content URL Rewriting et .htaccess 17 Février 2008
[Résolu] Conflit dans les régles de réécriture. URL Rewriting et .htaccess 7 Janvier 2008
[Résolu] Sous dossiers et réécriture d'url URL Rewriting et .htaccess 20 Août 2006
[resolu]aide reecriture d'une url URL Rewriting et .htaccess 4 Août 2006
[RESOLU] reecriture : rien ne change? URL Rewriting et .htaccess 8 Août 2005
[resolu] reecriture de sous domaines URL Rewriting et .htaccess 15 Juin 2005
[résolu] réécriture d'URL et générat° du .htaccess URL Rewriting et .htaccess 21 Août 2003
Problème images en https (forum phpbb) [résolu] Développement d'un site Web ou d'une appli mobile 18 Novembre 2017
[Résolu] Redirection 301 FR vers EN sur Prestashop uniquement sur outils Google ? Problèmes de référencement spécifiques à vos sites 11 Septembre 2017
[résolu] Passage à HTTPS, comment tester une page ? Développement d'un site Web ou d'une appli mobile 7 Septembre 2017
[Résolu] Redirection d'une famille d'URL URL Rewriting et .htaccess 9 Mars 2017
[Résolu] Diaporama et SEO Débuter en référencement 17 Janvier 2017
[résolu]Redirection monsite.fr/index.html sur monsite.fr et seo URL Rewriting et .htaccess 16 Janvier 2017
[resolu]Publicité facebook lié au compte instagram Facebook 12 Décembre 2016
[résolu] Récupérer des valeurs issues de javascript pour les mettre en base MySQL Développement d'un site Web ou d'une appli mobile 18 Juillet 2016