Pb URL Rewrite [Résolu]

Signaler
Messages postés
275
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
27 avril 2010
-
Messages postés
275
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
27 avril 2010
-
Bonjour,
Voila mon petit problème : chez moi ca marche et  comme d'hab  bah sur  internet ca marche moins bien !
J'ai activé l'url rewriting mais en fait quand je clique sur un lien c'est nickel sauf que apache me redirige completement sans garder la meme url !
ex je clique sur article_1.html et je me retrouve sur index.php?com=article&id=1 au lieu d'avoir une barre d'adrresse fixe. Comment je peux faire pour qu'elle ne change pas a la redirection ?

4 réponses

Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Juste après le RewriteEngine On, mets un
RewriteBase /tut/

Ensuite enlève tous tes http://localhost/tut/

Et lorsque tu fais une rewrite, pense à faire ceci :

RewriteRule ^index.html$ index.php [L]

(Rajouter ^ qui signifie "début de la chaîne" et $ qui signifie "fin de la chaîne").

Fais ça pour toutes tes rewrites, ça devrait mieux fonctionner.
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut,

quel est ton code que tu as utilisé pour faire la redirection ?
Messages postés
275
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
27 avril 2010
1
function urlrewrite($ob)
    {
    //test si on doit réécrire
    if(defined('_REWRITE_URLS_'))
        {
        preg_match_all('`]*)>([^<]*)`Usi',$ob,$liens, PREG_SET_ORDER);
            $l='';
            $a=array ('à','&agrave;','&acirc;','â');
            $e=array ('é','ê','è','ë','&eacute;','egrave;','&ecirc','&euml;');
        foreach ($liens as $url)
            {
            //liste des query url dans $url[1]
            $l.= $url[1];
            $l.='
';
            //test des urls
            //si c'est un article
            if (strstr($url[1],'itemID='))
                {
                //on decoupe selon la forme lang_article_sectionID_itemID
                //separation de la langue
                $lang=explode('lang=',$url[1]);
                //separation de la section
                $sect=explode('sectionID',$lang[0]);
                $sect[1]=str_replace('=','',$sect[1]);
                $sect[1]=str_replace('&','',$sect[1]);
                $sect[1]=str_replace('&amp;','',$sect[1]);
                //separation du numero de l'item
                $item=explode('itemID',$sect[1]);
                if($lang[1]=='') { $lang[1]=lang; }
                //netoiyage des accents pour le titre
                $url[3]=str_replace($e,'e',$url[3]);
                $url[3]=str_replace($a,'e',$url[3]);
                $ob=str_replace('index.php?'.$url[1],$lang[1].'_article_'.$item[0].'_'.$item[1].'_'.$url[3].'.html',$ob);
                }
            else if (strstr($url[1],'sectionID='))
                {
                //on decoupe selon la forme lang_article_sectionID_itemID
                //separation de la langue
                $lang=explode('lang=',$url[1]);
                //separation de la section
                $sect=explode('sectionID',$lang[0]);
                $sect[1]=str_replace('=','',$sect[1]);
                $sect[1]=str_replace('&amp;','',$sect[1]);
                $sect[1]=str_replace('&','',$sect[1]);
                
                //separation du numero de l'item
                $item=explode('itemID',$sect[1]);
                if($lang[1]=='') { $lang[1]=lang; }
                $url[3]=str_replace($e,'e',$url[3]);
                $url[3]=str_replace($a,'e',$url[3]);
                $ob=str_replace('index.php?'.$url[1],$lang[1].'_section_'.$item[0].'_'.$url[3].'.html',$ob);
                }
            else
                {
                //on decoupe selon le schéma index_var1_val1_var2_val2
                //on coupe donc la chaine au & pour separer les variables
                $aff='';
                $query=explode('&',$url[1]);
                    foreach($query as $q)
                        {
                        $rep=explode('=',$q);
                        $aff.='-';
                        $aff.=$rep[0].'-'.$rep[1];
                        }
                $aff=str_replace('=','',$aff);
                $aff=str_replace('amp;','',$aff);
                $ob=str_replace('index.php?'.$url[1],'index'.$aff.'.html',$ob);
                
                }
            }
        }
    return $ob;
    }
ob_start('urlrewrite');
COntenu
ob_get_flush()
et dans le htaccess
_______________________________

Options +FollowSymlinks
RewriteEngine on

#Gestion dynamique des URL de maniere recrusive pour des vars en minuscule
RewriteRule index(-.+)-([^-]*)-([^-]*)([^-]*)\.html index$1&$2=$3$4\.html [N]
RewriteRule index-([^-]+)-([^-]*)(.*)\.html http://localhost/tut/index.php?$1=$2$3 [L]

#Page index classique ou avec la langue
RewriteRule index.html http://localhost/tut/index.php [L]
RewriteRule (.*)_index.html http://localhost/tut/index.php?lang=$1 [L]

#Sections et articles
RewriteRule (.*)_section_(.*)_(.*)\.html http://localhost/tut/index.php?sectionID=$2&lang=$1 [L]
RewriteRule (.*)_article_(.*)_(.*)_(.*)\.html http://localhost/tut/index.php?sectionID=$2&itemID=$3&lang=$1 [L]

#Gestion dynamique des URL de maniere recrusive pour des vars en minuscule ALBUMS
RewriteRule gallery-(.*)-([^-]*)([^-]*)\.html http://localhost/tut/gallery-$1/$2$3\.html [N]
RewriteRule gallery-([^-]+)/([^-]*)(.*)\.html http://localhost/tut/index.php?composant=gallery&album=$1/$2$3 [L]

____________________________________
Mais le liens marchent le truc c'est que l'url ne reste pas en haut dans la barre d'adresse
Messages postés
275
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
27 avril 2010
1
Merci ca marche sauf que j'ai du ne ma mettre les ^ et  $ pour la methodes recursive
#Gestion dynamique des URL de maniere recrusive pour des vars en minuscule
RewriteRule index(-.+)-([^-]*)-([^-]*)([^-]*)\.html index$1&$2=$3$4\.html [N]
RewriteRule index-([^-]+)-([^-]*)(.*)\.html index.php?$1=$2$3 [L]