Problèmes d'accents dans l'url

Discussion dans 'URL Rewriting et .htaccess' créé par Dax701, 4 Septembre 2007.

  1. Dax701
    Dax701 Nouveau WRInaute
    Inscrit:
    11 Juin 2007
    Messages:
    30
    J'aime reçus:
    0
    Bonjour à tous,
    voilà j'ai un souci avec certains caractères tels que le é, è, à , ils sont automatiquement remplacés par un - et donc çà coupe les mots dans mes urls. Quelqu'un pourrait-il me dire comment je peux faire pour qu'ils soient remplacés par des e et des a sans accents ? Merci d'avance
    Voici mon htaccess :

    RewriteEngine On
    RewriteRule ^ad_([0-9]+)_(.*).html detail.php?id=$1
    RewriteRule ^cat_([0-9]+)_(.*).html index.php?catid=$1
    RewriteRule ^user_([0-9]+)_(.*).html user_info.php?user_id=$1
    RewriteRule ^ratemember_([0-9]+)_(.*).html rate_member.php?user_id=$1
    RewriteRule ^contact_([0-9]+)_([0-9]+)_(.*).html detail.php?id=$1&user_id=$2&contact=1
    RewriteRule ^rate_([0-9]+).html rate.php?id=$1
    RewriteRule ^largepicture_([0-9]+).html large_picture.php?id=$1
    RewriteRule ^tellafriend_([0-9]+).html detail.php?id=$1&tellafriend=1
    RewriteRule ^print_([0-9]+).html detail.php?id=$1&print=1
    RewriteRule ^removefav_([0-9]+).html fav_popup.php?remove_fav=$1
    RewriteRule ^addfav_([0-9]+).html fav_popup.php?add_fav=$1
    RewriteRule ^trm_(.*).html info.php?what=terms
    RewriteRule ^ab_(.*).html info.php?what=aboutus
    RewriteRule ^adv_(.*).html info.php?what=advertise
    RewriteRule ^hlp_(.*).html info.php?what=help
    RewriteRule ^rss_([0-9]+).html detail.php?id=$1

    J'ai trouvé ici et là ces fonctions mais je ne sais pas où les placer, directement dans le htaccess cause une erreur 500
    1ère solution:

    $accents = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ";
    $ssaccents = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn";
    $titre_url = strtr($titre,$accents,$ssaccents);
    $in = array(' ', '?', '!', '.', ',', ':', "'", '&', '(', ')');
    $out = array('-', '', '', '', '', '', '-', 'et', '', '');
    $titre_url = str_replace($in, $out, $titre_url);

    2ème solution:

    function suppaccents($mot){
    $accents = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ";
    $ssaccents = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn";
    return(strtr($mot,$accents,$ssaccents));
    }
     
  2. nickargall
    nickargall WRInaute accro
    Inscrit:
    13 Juin 2005
    Messages:
    6 601
    J'aime reçus:
    4
    Oulà ... les codes que tu as récupérés sont des fonctions PHP. Donc évidemment ils n'ont rien à faire dans ton .htaccess.
     
  3. julienr
    julienr WRInaute impliqué
    Inscrit:
    5 Août 2003
    Messages:
    939
    J'aime reçus:
    2
    salut,
    ou quand comment ? :)
     
  4. Dax701
    Dax701 Nouveau WRInaute
    Inscrit:
    11 Juin 2007
    Messages:
    30
    J'aime reçus:
    0
    Je suis d'accord mais je dois faire quoi de ces codes ? où dois-je les insérer ? est-ce que je dois créer un fichier php et y mettre le code dedans, si oui comment nommé ce fichier et où le placer ?

    Et bien çà se produit lorsque je visite par exemple la catégorie Accidentées:
    -http://www.domain.com/dossier/cat_1_Accident_es.html

    et quand je visite une annonce, le titre de celle-ci s'affiche comme çà:
    -http://www.domain.com/dossier/ad_1_Annonce-de-d-monstration.html

    J'aimerai bien pouvoir utiliser la deuxième solution citée plus haut,
     
  5. julienr
    julienr WRInaute impliqué
    Inscrit:
    5 Août 2003
    Messages:
    939
    J'aime reçus:
    2
    tu utilises un CMS quelconque pour ton site ?
    c'est la fonction qui génére tes liens qui pose problème
    le .htaccess est correct
     
  6. Dax701
    Dax701 Nouveau WRInaute
    Inscrit:
    11 Juin 2007
    Messages:
    30
    J'aime reçus:
    0
    oui le CMS çà me dit quelque chose, à moins que ce soit le CSS
     
  7. nickargall
    nickargall WRInaute accro
    Inscrit:
    13 Juin 2005
    Messages:
    6 601
    J'aime reçus:
    4
    Aïe. Si tu confonds CMS et CSS et que tu ne sais pas trop quoi faire de ces codes en PHP, ça va être un peu long de t'expliquer, il faut reprendre les bases du PHP ...

    Ceci dit si ce que tu indiques ne gène pas l'affichage des pages, la navigation, l'indexation des pages dans les moteurs, pas la peine de te prendre la tête. Laisse le tout en l'état.
     
  8. Dax701
    Dax701 Nouveau WRInaute
    Inscrit:
    11 Juin 2007
    Messages:
    30
    J'aime reçus:
    0
    Désolé je suis un débutant mais j'apprends vite, je viens de regarder la définition de CMSet voici ce que j'ai trouvé:

    Donc si j'ai bien compris tu me demandes si j'utilise un script déjà fait ou si c'est moi qui l'ai créé ?
    C'est un script de petites annonces tout fait que l'on peut modifier comme bon nous semble.
     
  9. rebouloup
    rebouloup WRInaute discret
    Inscrit:
    8 Juin 2004
    Messages:
    163
    J'aime reçus:
    0
    les accents ne passent pas dans les URLs
    C'est une norme.

    C'est pour cela que les liens sont recodés automatiquement comme t'as pu le constater.

    Maintenant en effet
    au lieu de "é"=>"_"
    tu préfères "é"=>"e"

    Il ne faut pas intervenir sur le .htaccess qui est suffisament bien fait pour ne pas toucher. Par contre il donnent des infos interessasntes

    Je remarque que seulement les chiffres sont importants
    cat_12_blah-blah.html
    qui devrait avoir le meme resultat que
    cat_12_hihihih.html

    il recupere le 12 une reference pour retrouver à quoi se référer très probablement ce qui veut dire que tu n'as pas besoin d'intervenir en amont.

    En aval, il faut que tu recodes tous tes liens hypertextes (en HTML c'est <a href=" _____ " ....>
    le ______ est à modifier en fonction

    Tu les cherches dans les fichiers et en effet tu appliques le bout de code que tu as trouvé plus haut en particulier ta fonction suppaccents devrait etre bien


    A+
    Je te laisse bosser
    car je ne vais pas faire le boulot à ta place faignasse !
     
  10. Dax701
    Dax701 Nouveau WRInaute
    Inscrit:
    11 Juin 2007
    Messages:
    30
    J'aime reçus:
    0
    Merci à toi,
    je ne suis pas un fainéant je suis juste dépassé par tous ces codes, je n'y connais pas grand chose à part faire du copier/coller

    Donc en gros tu me dis de rectifier les fichiers où j'ai fais mes modifs, exemple de lignes modifiées (en bleu) et d'y insérer le code de la function suppaccents :

    {if $category.SUBCATLIST}
    {foreach name=sub item=sub from=$category.SUBCATLIST}
    <a href="cat_{$sub.CATID}_{$sub.CATNAME|sanitize}.html" title="{$sub.CATNAME}">{$sub.CATNAME}</a>
    <small class="littleGray">{$sub.NUM}</small>{if !$smarty.foreach.sub.last},{/if}
    {/foreach}
    {elseif $category.CATDESCRIPTION}
    <small>{$category.CATDESCRIPTION}</small>
    {/if}

    Peux tu me monter comment insérer le code dans cet exemple s'il te plait ?

    Voici le code du fichier modifier.sanitise.php que j'ai aussi ajouter à mon script pour faire fonctionner le rewriting, est-ce qu'il faut le modifier lui aussi ?
    Code:
    <?php
    
    function smarty_modifier_sanitize($string, $spacify_char = ' ')
    {
    return preg_replace('!\W!','-',$string);
    }
    
    
    
    ?>
     
  11. rebouloup
    rebouloup WRInaute discret
    Inscrit:
    8 Juin 2004
    Messages:
    163
    J'aime reçus:
    0
    Tout est bien foutu dans les scripts que tu utilises !

    Tu as simplement à remplacer

    Code:
    function smarty_modifier_sanitize($string, $spacify_char = ' ') 
    { 
    return preg_replace('!\W!','-',$string); 
    } 
    
    par

    Code:
    function smarty_modifier_sanitize($string, $spacify_char = ' ') 
    { 
    $accents = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ"; 
    $ssaccents = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn"; 
    return(strtr($string,$accents,$ssaccents)); 
    } 
    
    Bon courage ... et pour le "faignant" c plus une boutade
     
  12. Dax701
    Dax701 Nouveau WRInaute
    Inscrit:
    11 Juin 2007
    Messages:
    30
    J'aime reçus:
    0
    Merci à toi,
    tout semble fonctionner à présent !
    J'avais bien compris que c'était une boutade ;)
     
  13. nickargall
    nickargall WRInaute accro
    Inscrit:
    13 Juin 2005
    Messages:
    6 601
    J'aime reçus:
    4
    Juste une chose pour casser l'ambiance...


    Si ton site est en ligne depuis longtemps et est bien référencé , je te conseille d'appliquer des redirections permanentes de tes anciennes URL (avec des - dans les adresses) vers les nouvelles, afin d'indiquer aux moteurs le changement. Sinon ils vont continuer à suivre les anciennes URL (qui logiquement fonctionnent toujours) et indexer les nouvelles, ce qui causera du contenu identique indexé en double (pas glop)

    Un petit tutorial sur les redirections pour t'aider si besoin est.

    Si ton site est tout frais et que son indexation est encore balbutiante, pas besoin de te prendre la tête.
     
  14. Dax701
    Dax701 Nouveau WRInaute
    Inscrit:
    11 Juin 2007
    Messages:
    30
    J'aime reçus:
    0
    Merci pour ces infos, mais à part ma page principale je n'ai jamais trouvé dans google d'autres pages du site sauf quand on clique sur " relancer la recherche en incluant les pages ignorées. "
    De plus c'est un site de petites annonces donc les pages corespondantes sont supprimées assez régulièrement, et je n'ai pas à la racine de mon site le htaccess dont on parle ici
     
  15. nickargall
    nickargall WRInaute accro
    Inscrit:
    13 Juin 2005
    Messages:
    6 601
    J'aime reçus:
    4
    Ok. Pour info, le .htaccess c'est toi qui le crée ;)
     
  16. pcamliti
    pcamliti WRInaute impliqué
    Inscrit:
    9 Mars 2007
    Messages:
    697
    J'aime reçus:
    1
    Tu créer un .htacess simplement en éditant avec un éditeur texte banal et nomme ton fichier .htacess cela suffit.

    Pose le sous la racine pour une redirection ou dans un dossier éventuellement dont tu souhaite la redirection.

    :wink:
     
  17. Dax701
    Dax701 Nouveau WRInaute
    Inscrit:
    11 Juin 2007
    Messages:
    30
    J'aime reçus:
    0
    Je reviens dessus car le message de nickargall m'a mis le doute.
    Mon script n'est pas placé à la base dans mon hébergement, mais dans un dossier, voici ce que je vois dans FileZilla /dossier/ et c'est la dedans que j'ai placé le fichier htaccess pour le rewriting.
    Est-ce que je peux y inclure la ligne
    Code:
    RedirectPermanent /robotstats 
    http://www.robotstats.com/
    ou bien je dois créer un autre htaccess et si oui où dois-je le placer? Dois-je aussi indiquer dans cette ligne le nom du dossier ex: www.robotstats.com/dossier ?

    J'ai aussi trouvé dans un vieux post une autre solution mais j'ai rien compris https://www.webrankinfo.com/forum/highl ... n+durl.htm

    dans mon cas je devrai donc insérer ce code dans ma page index.php ?
    if( preg_match("/(index.php|\/?)/i", $_SERVER['REQUEST_URI']) )
    { require('modifier.sanitize.php'); }

    voici le code de index.php
    Code:
    <?
    $lSearchEngineArray=array("Google", "Fast", "Slurp", "Ink", "Atomz", "Scooter", "Crawler", "MSNbot", "Poodle", "Genius"); 
    $lIsSearchE=0; 
    foreach($lSearchEngineArray as $key => $val)  
    	if(strstr($_SERVER['HTTP_USER_AGENT'], $val)) 
    		$lIsSearchE++; 
    if($lIsSearchE==0) 
    	session_start(); 
    	
    require("admin/inc.php");
    $catname = "";
    $catid = getParamInt("catid","");
    if ($catid) {
    	$sql="select cat_name,cat_tpl";
    	
    	
    	if (!empty($_SESSION["la"]) AND $set_multilang_cat)
    	{
    		$lang_cat = "lang_" . $_SESSION["la"];
    		$sql.=",$lang_cat";
    	}
    	$sql.=" from $cat_tbl where cat_id = $catid";
    	$row=mysql_fetch_array(q($sql));
    	
    	$catname = $row["cat_name"];
      	if (!empty($row["$lang_cat"]))
      		$catname=$row["$lang_cat"];
    	 if (!empty($row["cat_tpl"]))
      		$cat_tpl=$row["cat_tpl"];
      	
      	$pagename= $sitename . " - " . $catname;
    		
    }
    else
    	$fp = 1;
    
    require("header_inc.php");
    $tplIndex=new TplLoad;
    $tplIndex->assign("catname",$catname);
    $val_string = "";
    
    
    // Security check
    if (file_exists("install.php"))
    {
    	print "<p><center><b><font color='red'>SECURITY WARNING</font></b><br />You have not followed our instructions to 	delete install.php
    	immediately after install. Leaving this file here is a <u>major</u> security problem and opens your site up
    	to wild hacking.</center></p>";	
    }
       
    // If we are on the frontpage, write out welcome message along with flags
    $tplIndex->assign("index_catid",$catid);
    $tplIndex->assign("banner",$lBanner);
    $tplIndex->assign("isFrontpage","$fp");
    if ($fp && !$set_latest_fp)
    	$tplIndex->assign("HideLastListFp","1");
    $tplIndex->assign("index_nameofsite",$name_of_site);
    $tplIndex->assign("index_welcome",formatString(WELCOME_MESSAGE, array("$name_of_site")));
    $tplIndex->assign("index_welcome_1",formatString(LA_WELCOME_1, array("$name_of_site")));
    $tplIndex->assign("index_welcome_2",formatString(LA_WELCOME_2, array("$name_of_site")));
    $tplIndex->assign("index_welcome_91",formatString(LA_WELCOME_LOGGED_1, array($_SESSION['user_name'])));
    $tplIndex->assign("index_welcome_92",formatString(LA_WELCOME_LOGGED_2, array($_SESSION['user_name'])));
    $tplIndex->assign("member",$_SESSION["valid_user"]);
    
    if ($set_special)
    {
    	$limit=$set_premium_limit;
    	$sql_str = "select ad_title, ad_id from $ads_tbl where ad_is_premium=1 ";
    	if ($catid AND $set_special_categories)
    		$sql_str.=" AND ad_cat_id=$catid";
    	if ($set_special_only_frontpage AND $catid)
    		$sql_str.=" AND 2<1";
    		
    	$sql_str.=" $val_string order by ad_id desc limit $limit";
    	$res_sp = q($sql_str);
    	$sp_i=0;
    	while ($row_sp=mysql_fetch_array($res_sp))
    	{
    		$s_title = $row_sp["ad_title"];	
    		$s_id = $row_sp["ad_id"];	
    		
    		$lSpecialAds[$sp_i]["s_title"]=dotString($s_title,$set_special_string_length);
    		$lSpecialAds[$sp_i]["s_id"]=$s_id;
    		
    		$sp_i++;
    	}
    	$tplIndex->assign("special_list",$lSpecialAds);	
    	
    	if ($sp_i==0)
    		$tplIndex->assign("size","100");	
    	else
    		$tplIndex->assign("size","70");	
    }
    else 
    {	
    	$tplIndex->assign("size","100");		
    }
    
    $tplIndex->display("index.tpl");
    include_once("footer_inc.php");
    ?>
     
  18. nickargall
    nickargall WRInaute accro
    Inscrit:
    13 Juin 2005
    Messages:
    6 601
    J'aime reçus:
    4
    Arrête tout, tu fais fausse route ! Le code que tu as lu :
    Code:
    RedirectPermanent /robotstats
    http://www.robotstats.com/
    
    est un exemple concernant un dossier qui s'appellerait Robotstats . Rien à voir avec ton site.

    Je te donne un exemple :
    - on a sur un site une page qui s'appelle "www.example.com/page.html"
    - un jour, on décide de la placer dans un répertoire, elle change donc d'adresse :
    "www.example.com/repertoire/page.html"

    Pour indiquer aux moteurs qu'elle a déménagé, on crée donc un fichier .htaccess qu'on place à la racine du site.
    Dans ce fichier, on écrit :
    Code:
    RewriteEngine On
    Redirect permanent /page.html /repertoire/page.html
    
    mais il te faudra un peu de lecture sur la redirection permanente par htaccess pour tout rediriger ... Si tu n'as que quelques pages indexées, tu peux t'en passer ...
     
  19. Dax701
    Dax701 Nouveau WRInaute
    Inscrit:
    11 Juin 2007
    Messages:
    30
    J'aime reçus:
    0
    J'ai lu que si j'ajoutais les trois dernières lignes de code au bas de mon htaccess, cela résoudrait le petit problème qui est que l'on peut accéder à la page d'acceuil de mon site en tapant directement -http://www.domaine.com/dossier et -http://www.domaine.com/dossier/index.php . Est-ce bien exact ?
    Code:
    RewriteEngine On
    RewriteRule ^ad_([0-9]+)_(.*).html detail.php?id=$1
    RewriteRule ^cat_([0-9]+)_(.*).html index.php?catid=$1
    RewriteRule ^user_([0-9]+)_(.*).html user_info.php?user_id=$1
    RewriteRule ^ratemember_([0-9]+)_(.*).html rate_member.php?user_id=$1
    RewriteRule ^contact_([0-9]+)_([0-9]+)_(.*).html detail.php?id=$1&user_id=$2&contact=1
    RewriteRule ^rate_([0-9]+).html rate.php?id=$1
    RewriteRule ^largepicture_([0-9]+).html large_picture.php?id=$1
    RewriteRule ^tellafriend_([0-9]+).html detail.php?id=$1&tellafriend=1
    RewriteRule ^print_([0-9]+).html detail.php?id=$1&print=1
    RewriteRule ^removefav_([0-9]+).html fav_popup.php?remove_fav=$1
    RewriteRule ^addfav_([0-9]+).html fav_popup.php?add_fav=$1
    RewriteRule ^trm_(.*).html info.php?what=terms
    RewriteRule ^ab_(.*).html info.php?what=aboutus
    RewriteRule ^adv_(.*).html info.php?what=advertise
    RewriteRule ^hlp_(.*).html info.php?what=help
    RewriteRule ^rss_([0-9]+).html detail.php?id=$1
    
    Options +FollowSymLinks 
    RewriteCond %{THE_REQUEST} ^.*/index.php 
    RewriteRule ^(.*)index.php$ http://www.domaine.com/dossier/$1 [R=301,L]
    Si je crée un htaccess avec ceci dedans et que je l'installe dans le dossier qui contient mon script, cela va-t-il bien indiquer aux moteurs les nouvelles url ?
    Code:
    RewriteCond %{HTTP_HOST} !^www\.domaine\.com\dossier
    RewriteRule (.*) http://www.domaine.com/dossier/$1 [R=301,L]
     
  20. nickargall
    nickargall WRInaute accro
    Inscrit:
    13 Juin 2005
    Messages:
    6 601
    J'aime reçus:
    4
    Si tu mets texto les lignes de code que tu indiques, ça ne fera rien, il faut que tu les adapte à TON nom de domaine et TON nom de répertoire
     
  21. Dax701
    Dax701 Nouveau WRInaute
    Inscrit:
    11 Juin 2007
    Messages:
    30
    J'aime reçus:
    0
    Salut nickargall,
    oui j'ai bien compris çà , c'était pour l'exemple. Le seul truc qui m'inquiète c'est les mots tels que THE_REQUEST et HTTP_HOST, il ne faut pas les changer ceux-là ? Sinon tu penses que c'est OK cette fois , il n'y a pas d'erreur ?
     
  22. nickargall
    nickargall WRInaute accro
    Inscrit:
    13 Juin 2005
    Messages:
    6 601
    J'aime reçus:
    4
    Je ne suis pas un expert en rewriting, et j'attaque depuis peu les RewriteCond donc voilà quoi .. je vais pas m'engager sur la validité des règles que tu indiques.
    Mais se prémunir d'un doublon entre un /dossier/ et un /dossier/index.php, c'est pas crucial pour le référencement d'un site, ptet pour son pagerank mais bon pour ce que ça change, un bon Pagerank ...
     
Chargement...
Similar Threads - Problèmes accents Forum Date
Problèmes d'accents sur mon site Développement d'un site Web ou d'une appli mobile 21 Avril 2010
Problèmes accents Administration d'un site Web 12 Juillet 2006
problèmes procédures stockées Administration d'un site Web 9 Mars 2022
Problèmes détectés par Semrush Demandes d'avis et de conseils sur vos sites 29 Décembre 2021
Problèmes dans le méta-titre / description + Sitemap Référencement Google 29 Novembre 2021
Search Console Problèmes réguliers d'ergonomie mobile sans modification Problèmes de référencement spécifiques à vos sites 18 Novembre 2021
Problèmes avec OVH. Le café de WebRankInfo 8 Octobre 2021
Problèmes score Rank Math Référencement Google 20 Septembre 2021
Problèmes - Indexation et Sitemap Problèmes de référencement spécifiques à vos sites 10 Août 2021
Problèmes de trafic incorrect Annonces Limités AdSense 2 Janvier 2021
Problèmes d'indexation de Google fin 2020 Crawl et indexation Google, sitemaps 1 Décembre 2020
Divers problèmes de Google Crawl et indexation Google, sitemaps 29 Novembre 2020
Problèmes d'indexations de Google Crawl et indexation Google, sitemaps 19 Octobre 2020
Search Console Problèmes chargements images Crawl et indexation Google, sitemaps 3 Septembre 2020
Problème OVH et Problèmes de WHOIS Demandes d'avis et de conseils sur vos sites 30 Avril 2020
Problèmes des redirections 301 en transparence Noms de domaine et référencement 12 Mars 2020
Problèmes migration NDD Crawl et indexation Google, sitemaps 21 Février 2020
Search Console Premier référencement et problèmes Débuter en référencement 11 Novembre 2019
Test d'optimisation mobile : Problèmes de chargement de la page Débuter en référencement 10 Novembre 2019
Problèmes d'indexation et robots.txt Crawl et indexation Google, sitemaps 14 Octobre 2019