Réecrire url avec lang

Discussion dans 'URL Rewriting et .htaccess' créé par benthebest, 13 Octobre 2013.

  1. benthebest
    benthebest Nouveau WRInaute
    Inscrit:
    21 Décembre 2007
    Messages:
    7
    J'aime reçus:
    0
    Bonjour,

    Bon je ne suis pas très à l'aise avec le htaccess mais je rencontre un souci assez bizzare :

    Je souhaiterai réécrire les urls de mon site de sorte que :

    Code:
    www.monsite.fr/page.php?lang=fr&divers=xx
    
    devienne

    Code:
    www.monsite.fr/fr/page.php?divers=xx
    
    J'essai tant bien que mal d'utiliser un htaccess :
    Code:
    RewriteEngine on
    RewriteRule ^(fr|en)/(.*)\.php$ $2.php?lang=$1 [QSA]
    
    Mais ça ne fait strictement rien (je précise que je test pour le moment en local, type: 127.0.0.1:8888/MONDOSSIERSITE/page.php)

    Je précise que j'ai bien le mod_rewrite loaded (en regardant phpinfo())

    D'ailleurs ce script fonctionne bien
    Code:
    RewriteEngine on
    RewriteRule .* /maintenance.php [R=302,L]
    
    Bref, je ne sais pas trop quoi faire ...

    Merci d'avance pour votre aide :)
     
  2. Giustino
    Giustino WRInaute discret
    Inscrit:
    19 Novembre 2011
    Messages:
    140
    J'aime reçus:
    0
    Code:
    RewriteEngine on
    
    RewriteCond     %{QUERY_STRING}     ^divers=(.+)$
    RewriteRule      ^([a-z]{2})/(.+).php$     $2.php?lang=$1&divers=%1 [L]
    
     
  3. benthebest
    benthebest Nouveau WRInaute
    Inscrit:
    21 Décembre 2007
    Messages:
    7
    J'aime reçus:
    0
    Bonjour et merci Giustino de ton aide.

    Malheureusement le résultat est le même : rien ne se passe...

    Y a t il un autre moyen de vérifier si le mod rewrite est malgré tout bien activé ?
     
  4. Koxin-L.fr
    Koxin-L.fr WRInaute passionné
    Inscrit:
    15 Janvier 2012
    Messages:
    1 891
    J'aime reçus:
    8
    Slt,

    Pour commencer, un site en maintenance, c'est une 503, pas une 302.
     
  5. Giustino
    Giustino WRInaute discret
    Inscrit:
    19 Novembre 2011
    Messages:
    140
    J'aime reçus:
    0
    Ta remarque est correcte mais inutile dans ce contexte.
    En effet, benthebest a bien précisé qu'il travaillait en local et son exemple ne servait que de test (il a d'ailleurs utilisé une 302, à juste titre, plutôt qu'une 301, dans l'unique but de vérifier l'activation du rewriting).

    Bref, revenons-en au sujet principal.

    En relisant ton premier message, j'ai pu constater que ton site était dans un sous-dossier et non à la racine principale.
    Ceci est surement une des raisons du non-fonctionnement de mon code (j'y reviendrai plus bas).

    Si ta règle de réécriture pour la maintenance (voir ton premier message) a fonctionné alors le rewriting est bien activé.

    Pour en revenir au fait que ton site se trouve dans un sous-dossier et non à la racine, au niveau du htaccess il faut utiliser dans ce cas un RewriteBase afin de définir la base de réécriture.

    Code:
    RewriteEngine on
    RewriteBase /MONDOSSIERSITE
    
    RewriteCond     %{QUERY_STRING}     ^divers=(.+)$
    RewriteRule      ^([a-z]{2})/(.+).php$     $2.php?lang=$1&divers=%1 [L]
    
    Ceci devrait fonctionner. Néanmoins, tu risques d'avoir un duplicate content car l'ancienne adresse reste accessible. Je t'invite à consulter ce tutoriel https://www.webrankinfo.com/forum/t/tutoriel-eviter-les-boucles-de-redirection.168006/. Tu peux l'adapter à ton cas et ainsi éviter un duplicate content, tout en évitant une boucle de redirection.

    Si tu as besoin d'aide pour ça, n'hésite pas à le dire. Essayes d'abord uniquement avec le code que je t'ai mis, ensuite tu mettras en place la technique du tutoriel.

    NB: pour tester avec uniquement le code de base, essayes d'accéder à http://127.0.0.1:8888/MONDOSSIERSITE/fr/page.php?divers=xxx. Si ça fonctionne, tu es censé obtenir exactement le même contenu que http://127.0.0.1:8888/MONDOSSIERSITE/page.php?lang=fr&divers=xxx
     
  6. benthebest
    benthebest Nouveau WRInaute
    Inscrit:
    21 Décembre 2007
    Messages:
    7
    J'aime reçus:
    0
    Merci de vos réponses

    Oop, j'avais pas fait attention mais, il y a bien une redirection mais effectivement, il part à la racine et du coup ne trouve pas le fichier maintenance.php... Mais bon il y a quand même une redirection...

    Je précise aussi que la variable GET "divers" n'est pas à tous les coup présente (mais "lang" oui).

    Mais j'ai essayé ton htaccess sur une page ayant le "divers" mais la réécriture ne fonctionne quand même pas...

    J'ai testé la première url et ça fonctionne mais les images n'apparaissent pas ... donc je n'obtiens pas exactement le même contenu que la 2eme ...

    Merci de votre aide
     
  7. Koxin-L.fr
    Koxin-L.fr WRInaute passionné
    Inscrit:
    15 Janvier 2012
    Messages:
    1 891
    J'aime reçus:
    8
    @Giustino
    Je l'informe.
    Toi, quand tu vois un type se gourer... tu le laisse pensant qu'il sait mais qu'il l'a fait exprès ?

    Pas moi.
    Ca m'a pris 10s, une ligne et ça l'a peut-être aidé.
    Y a pas à chercher à chipoter.
     
  8. Giustino
    Giustino WRInaute discret
    Inscrit:
    19 Novembre 2011
    Messages:
    140
    J'aime reçus:
    0
    @Koxin-L.fr
    Pas de problème, ce n'était pas une remarque négative envers toi mais plutôt pour ne pas embrouiller benthebest et se concentrer d'abord sur l'essentiel du sujet.

    Ok, cela confirme donc bien que le rewriting est activé.

    Ce n'est pas un problème, il suffit d'adapter le code htaccess à ce cas-là.

    Donc en somme ça fonctionne ! Pour régler le problème des images qui ne s'affichent pas (le css en général, en fait), il faut ajouter ceci dans ton code html (juste après la balise <head>):

    Code:
    <base href="http://127.0.0.1:8888/MONDOSSIERSITE/" />
    
    Comme par magie, tout s'affichera normalement. Ceci étant fait, cela signifie que ton nouveau format d'url pointe bien sur l'ancien format et affiche donc bien le même contenu.
    Tu peux donc regarder le tutoriel dont je t'ai donné le lien précédemment, afin d'implémenter la technique contre le duplicate content et les boucles de redirection.

    Ah oui, j'oubliais ! Pour le cas où tu n'as pas de paramètre GET "divers"... ceci devrait fonctionner:

    Code:
    RewriteEngine on
    RewriteBase /MONDOSSIERSITE
    
    RewriteCond     %{QUERY_STRING}     ^divers=(.+)$
    RewriteRule      ^([a-z]{2})/(.+).php$     $2.php?lang=$1&divers=%1 [L]
    RewriteRule      ^([a-z]{2})/(.+).php$     $2.php?lang=$1 [L]
    
     
Chargement...
Similar Threads - Réecrire Forum Date
Réécrire url sans la variable Référencement Google 19 Avril 2018
Rediriger/réécrire toutes les pages index.html contenues dans plusieurs dossiers URL Rewriting et .htaccess 1 Mars 2016
Réécrire des articles automatiquement Rédaction web et référencement 23 Février 2016
URL rewriting : réécrire automatiquement un bout de l'url URL Rewriting et .htaccess 21 Juillet 2014
Réécrire les balises Title Débuter en référencement 14 Novembre 2013
réécrire .php en .html URL Rewriting et .htaccess 2 Janvier 2012
Réecrire l'url d'un répertoire vers le répertoire parent URL Rewriting et .htaccess 15 Mai 2011
réécrire index.php?id=xxx avec le titre d'un champs mysql URL Rewriting et .htaccess 14 Mars 2011
Réécrire des URL avec un p... de point d'interrogation ? URL Rewriting et .htaccess 10 Décembre 2010
HS: réécrire une url Débuter en référencement 28 Novembre 2010
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice