Pb URL Rewrite

Résolu
cedriclomb Messages postés 275 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 27 avril 2010 - 29 déc. 2006 à 10:48
cedriclomb Messages postés 275 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 27 avril 2010 - 29 déc. 2006 à 12:57
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

cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
29 déc. 2006 à 12:50
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.
3
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
29 déc. 2006 à 11:52
Salut,

quel est ton code que tu as utilisé pour faire la redirection ?
0
cedriclomb Messages postés 275 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 27 avril 2010 1
29 déc. 2006 à 12:41
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
0
cedriclomb Messages postés 275 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 27 avril 2010 1
29 déc. 2006 à 12:57
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]
0
Rejoignez-nous