Redirection 301 et réécriture d'url récalcitrantes

Discussion dans 'URL Rewriting et .htaccess' créé par 3bida, 26 Mai 2009.

  1. 3bida
    3bida WRInaute discret
    Inscrit:
    6 Juin 2007
    Messages:
    81
    J'aime reçus:
    0
    Bonjour,

    Je suis en train d'apporter quelques modifications à mon site dans l'optique d'avoir un meilleur référencement de la part des moteurs de recherche, notamment un certain nombre de pages qui sont écrites sous cette forme:

    h**p://www.monsite.com/?pg=3&page=category&category_id=305
    A noter: l'absence de index.php

    J'aimerai réécrire cette url sous cette forme:
    h**p://www.monsite.com/category305-3.html

    Or quand je fais ceci:

    Code:
    #redirection
    RewriteCond %{QUERY_STRING} ^pg=([0-9]+)&page=category&category_id=([0-9]+)$
    RewriteRule ^index\.php$ /category%2-%1.html? [R=301,L]
    
    #réécriture
    RewriteRule ^category([0-9]+)-([0-9]+)\.html$ /?pg=$1&page=category&category_id=$2&stop [L]
    Cela ne marche pas et en plus la page category305-3.html m'envoi vers la page category302.html (305-3 = 302), allez comprendre pourquoi !!

    Quelqu'un pourrait-il prendre quelques minutes de son temps afin de ma'ider à regler ce petit problème.

    Merci d'avance.
    Bruno

    EDIT: Je viens de comprendre pourquoi L'url réécrit renvoi vers une autre page. En fait c'est parceque "305-3" n'est pas traduit par category_id=305 et pg=3 mais comme une variable $_GET['category_id'] = 305-3; qui sera traitée par la suite.
    Donc l'url rewrting ne fonctionne pas.
     
  2. f123b
    f123b Nouveau WRInaute
    Inscrit:
    8 Juin 2009
    Messages:
    1
    J'aime reçus:
    0
    bonsoir, j'ai un problème de redirection 301 dans le htaccess:
    j'ai des urls de cette forme: search.php?keyword=$1&categorie=$2&page=$3&plusmoins=$4
    j'utilise la règle suivante dans le htaccess:

    Code:
    RewriteEngine On
    RewriteRule (.*)-(.*)-(.*)-(.*)\.html$  /search.php?keyword=$1&categorie=$2&page=$3&plusmoins=$4 [L]
    pas de problème les url sont bien réécrites,
    par contre ces données proviennent d'un formulaire qui utilise la méthode get et qui appelle le fichier search.php.
    Comment faire sans utiliser de header location ou de javascript, donc avec le htaccess pour avoir une redirection 301 quand on soumet le formulaire?

    j'ai essayer des règles de ce style:

    Code:
    RedirectPermanent /search.php?keyword=(.*)&categorie=(.*)&page=(.*)&plusmoins=(.*) /$1-$2-$3-$4\.html 
    mais ca ne fonctionne pas (boucle infini).

    peut être en utilisant RewriteCond %{QUERY_STRING} ... mais j'arrive pas à formuler la syntaxe.