Redirection 301 url rewriting avec mots clés

Discussion dans 'Netlinking, backlinks, liens et redirections' créé par Doubrovski, 4 Juin 2011.

  1. Doubrovski
    Doubrovski WRInaute occasionnel
    Inscrit:
    9 Avril 2011
    Messages:
    443
    J'aime reçus:
    0
    Bonsoir,
    Bon j'ai passé une dure journée à coder un système de news avec résumé, les titres envoient vers une page par news. Ensuite j'ai voulu faire de l'url rewriting sur les pages de news. J'ai lu les explications de WRI, ça m'a permis d'obtenir ce code :
    RewriteEngine On
    Code:
    Options +FollowSymlinks
    RewriteRule ^news-([0-9]+)-([a-zA-Z0-9\-]+)\.html$ /index.php?id=$1&titre=$2 [L]
    J'obitens donc des url du type :
    http://www.monsite.com/news-28-11-titre-de-la-news.html
    (si le format vous parait bizarre, je veux bien des conseils :) J'ai choisi le mot news+id de la news+année et titre)

    Mais pour la redirection 301, je bloque. J'ai trouvé cet article qui permet de comprendre certaines choses, mais apparemment le code ne fonctionne pas pour les url avec mots clés. J'ai testé effectivement ça ne fonctionne pas quand il y a plusieurs "$".

    Il n'y a aucun moyen via .ht access ?
    Ensuite j'ai lu un tas d'autres articles et apparemment le php est une solution, mais mes essais n'ont pas été concluants.
    Par exemple ce code :
    Code:
    <?php
    $url_attendue = get_lien_article($_GET['id']);
    $url_reelle = $_SERVER['REQUEST_URI'];
    if ($url_attendue != $url_reelle) {
      header('Status: 301 Moved Permanently', false, 301);
      header('Location: ' . $url_attendue);
      exit;
    }
    ?>
    Faut-il lancer un appel à la bdd au tout début de la page ? Je comprend mal la ligne " get_lien_article($_GET['id']);"

    Sinon j'ai trouvé ça :
    Code:
    <?php
    
          $URi = $_SERVER["REQUEST_URI"];
    
              $motif = "'(/index\.php\?id=)+([0-9]+)'";
              if (preg_match($motif,$URi,$capture))
              {
              header("Status: 301 Moved Permanently");
              header("Location: http://www.site.com/index-$capture[2].html");
              exit;
              }
    
    ?>
    J'ai du mal à l'adapter également...

    Je peux aussi essayer de simplifier mes adresses sans id des news, mais c'est pas une bonne idée je crois.
    Bonne soirée/nuit !
     
  2. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 417
    J'aime reçus:
    0
    ça veut dire quoi "ça ne fonctionne pas" ? quelle url as-tu en entrée ? que veux tu obtenir et qu'obtiens-tu ?
     
  3. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 181
    J'aime reçus:
    1
    Ce qu'il faut retenir et qui est "universel" dans ce script c'est :

    header('Status: 301 Moved Permanently', false, 301);
    header('Location: ' . $url_attendue);
    exit;

    qui renvoie une entête 301 sur la demande de l'url en cours et renvoie l'utilisateur sur la bonne page (header('Location: ' . $url_attendue);)

    ensuite pour ce qui est de la base ça dépend de ton système, ce n'est pas forcement nécessaire.

    get_lien_article($_GET['id']); est censé être un appel de fonction qui renvoie une url d'un article don l'id en base est dans le paramètre GET nomé id ($_GET['id']).

    cette fonction fait peut être appel a une base en effet. Le scripte complet dit donc que si l'url demandé (via navigateur) n'est pas sous la forme de l'url ré-écrite fournie par "get_lien_article" alors renvoie vers la page definitive (donc l'url qu'a calculé "get_lien_article") en disant (301) que la page est déplacée.

    Dans ton cas tu semble parler d'un système de news que tu viens de créer donc a priori je ne voie pas l'utilité de renvoyer des anciens article avec des urls à paramètre qui n'existent pas encore vers les nouvelles. Donc je ne voie pas l'utilité d'une 301. S tel est le cas il faut juste que tes liens internes soit sous la forme définitive et il seront indexés comme tel.
     
  4. Doubrovski
    Doubrovski WRInaute occasionnel
    Inscrit:
    9 Avril 2011
    Messages:
    443
    J'aime reçus:
    0
    Merci !
    D'accord je vais continuer à tester, je crois que là où je bloque, c'est pour retranscrire l'adresse avec les variables d'url en php. Je dois faire une faute quelque part.


    Et bien le "&rewriting" s'inscrit dans l'adresse, donc le lien est foireux ainsi que la redirection. Par contre la réécriture fonctionne toujours.

    Voilà le code que j'avais testé (de mémoire) :
    Code:
    RewriteEngine on
    
    RewriteCond %{QUERY_STRING} ^id=(.*)&titre=(.*)$
    RewriteRule ^index\.php$ /news-%1&-%2.html? [R=301,L]
    
    RewriteRule ^news-([0-9]+)-([a-zA-Z0-9\-]+)\.html$ /index.php?id=$1&titre=$2&rewriting [L]
    C'est totalement inutile de rendre inaccessibles les url avec id ? Je sais qu'il y a peu de chances d'avoir des problèmes puisque les liens du site ne mènent pas vers ces pages. Mais je sais pas.

    Sinon j'essaye de simplifier les variables des url, je ne vais en avoir qu'une seule finalement.
     
  5. Doubrovski
    Doubrovski WRInaute occasionnel
    Inscrit:
    9 Avril 2011
    Messages:
    443
    J'aime reçus:
    0
    Je me suis contenté d'un noindex nofollow sur les pages à ne pas visiter :)
     
Chargement...
Similar Threads - Redirection 301 rewriting Forum Date
Conflit de redirection 301 et Urlrewriting Netlinking, backlinks, liens et redirections 20 Février 2019
URL REWRITING et redirection 301 URL Rewriting et .htaccess 24 Janvier 2019
Problème avec URL rewriting après redirection 301 URL Rewriting et .htaccess 5 Novembre 2014
Redirection 301 et rewriting avec plusieurs variables URL Rewriting et .htaccess 12 Juin 2014
[URL REWRITING] Redirection 301 pages générées URL Rewriting et .htaccess 12 Novembre 2013
Url rewriting et redirection 301 [R=301,L] ne fonctionne pas ensemble URL Rewriting et .htaccess 18 Septembre 2013
Redirection 301 sur un fichier déjà en URL rewriting URL Rewriting et .htaccess 21 Mars 2012
Site html passe à joomla, redirection 301, url rewriting page par page Débuter en référencement 12 Mars 2012
Redirection 301 + URL rewriting URL Rewriting et .htaccess 14 Juillet 2011
Url rewriting + redirection 301 URL Rewriting et .htaccess 13 Janvier 2011