Pratique de Htaccess : à lire avant de poser

Discussion dans 'URL Rewriting et .htaccess' créé par mahdivitchee, 1 Septembre 2010.

Tags:
  1. mahdivitchee
    mahdivitchee WRInaute discret
    Inscrit:
    22 Mars 2010
    Messages:
    168
    J'aime reçus:
    0
    Bonjour
    j'ai regarder que la plupart des topic sont des question que en'a déjà réponde

    pour cela j'ai lancer ce topic ( et j'excuse pour l'orthographe :mrgreen: )



    Pratique de Htacess :

    Bonjour

    avant de poser une question merci de lire ce topic : ( redirection ancien page vers nouvelle page, redirection nom de domaine vers autre, site sans www. vers site avec www ..... )

    https://www.webrankinfo.com/forum/t/des-codes-pour-la-redirection-htaccess.110832/



    //// des explications :

    \ Annule le meta-sens du meta-caractère qui suit
    ^ Reconnaît le debut de la ligne
    . Reconnaît n'importe quel caractère (sauf le caractère nouvelle ligne)
    $ Reconnaît la fin de la ligne (ou juste avant le caractère nouvelle ligne final)
    | Alternative
    () Groupement
    [] Classe de caractères


    * Reconnaît 0 fois ou plus
    + Reconnaît 1 fois ou plus
    ? Reconnaît 0 ou 1 fois
    {n} Reconnaît n fois exactement
    {n,} Reconnaît au moins n fois
    {n,m} Reconnaît au moins n fois mais pas plus de m fois

    ( exemple : ([0-9]{1,2}) Autorise un ou deux chiffres
    ([0-9]*) Autorise tous les chiffres
    (([a-z]|-)*) Autorise toutes les lettres et tirets
    ([A-Z]+) au moins une caractère Majuscule
    (.*) toutes les chiffre et les caractères
    ([0-9]+)([a-z]) : au moins un chiffre après n caractère ( n de 0 à l'infini )

    .......

    )



    *************************

    pour nettoyer les url en php voila la fonction : ( remplacer é par e , espace par - ........)

    Code:
    function nettoyage($text)
    {
       $separator = "-";
       $tofind = "àáâãäåòóôõöøèéêëçìíîïùúûüÿñ"; // Lettre accentuées
       $replac = "aaaaaaooooooeeeeciiiiuuuuyn"; // Equivalent non accentué
       $text = strtr(strtolower($text),$tofind,$replac);
       $text = ereg_replace("[^a-z0-9.]", $separator, $text);
       while (strstr($text, $separator . $separator))
          $text = str_replace($separator . $separator, $separator, $text);
       if (substr($text, 0, 1) == $separator)
          $text = substr($text, 1);
       return(ereg_replace($separator . "$", "", $text));
    }
    *****************************


    par ( polyptote ) ,
    Bonjour,
    J'ai besoin de rediriger d'anciennes URL, suite à un changement de forum.
    Ce qui produisait des URL comme celles-ci :
    -http://example.net/forum/sujet-777

    Mes nouvelles URL sont formées ainsi :
    -http://example.net/forum/topic777

    >>> Solution :

    Code:
    RedirectMatch permanent /forum/sujet(.*) http://www.example.net/forum/topic$1


    ******************************

    Par caviar :

    je voudrai faire des règles simples

    1 - si l'url après le ndd contient cat- alors je redirige vers page=accueil&idcat=$1
    2 - si l'url après le ndd contient commentaires- alors je redirige vers page=addcomments&id=$1


    >> solution :

    Code:
    RewriteRule ^cat-(.*)$ index.php?page=accueil&idcat=$1 [L,NC]
    RewriteRule ^commentaires-(.*)$ index.php?page=addcomments&id=$1 [L,NC] 


    *******************************

    par monbototo
    j'aimerai rediriger http://www.anciensite.com vers http://www.nouveausite.com de façon permanente, mais sauf le dossier "wanewsletter" ainsi que tous les sous-dossiers et fichiers qu'il contient.


    >> solution :

    Code:
    RewriteCond %{REQUEST_URI} !wanewsletter/(.*)$
    RewriteRule (.*) http://www.nouveausite.com/$1 [QSA,R=301,L]

    ***********************

    par moi :

    Toutes tes pages en ...index.php5?title=quelquechose seront redirigé en 301 (redirection permanente et définitive) vers les pages .../quelquechose.


    >>solution :

    Code:
     RewriteRule ^index.php5?title=([a-zA-Z0-9]+) /$1 [R=301]


    **************************

    par sebrem :

    Est-il possible de modifier une url du type :
    http://www.monsite.com/collection/fiche.php?millesime=2010&id=123
    en :
    http://www.monsite.com/collection-2010/fiche-123.html

    >> solution ( à mettre dans le racine , par Rod la Kox )

    Code:
    RewriteRule ^collection-([0-9]+)/fiche-([0-9]+)\.html$ /collection/fiche.php?millesime=$1&id=$2
    ****************************

    Par pointb :

    Je souhaite rediriger l'url http://www.exemple.com/fr vers http://fr.exemple.com (et que ça soit visible dans la barre d'adresse) ainsi que tout ce que contient /fr

    >> solution

    Code:
    Redirect permanent /fr http://fr.exemple.com

    ******************************************

    Je voudrais via le htaccess réecrute
    http://www.example.com/products.php?cat=10
    vers
    http://www.example.com/le-produit-numero-10.

    >> solution

    Code:
    RewriteRule products.php?cat=([0-9]+) /produit-$1 [R=301]

    ***************************************


    j'ajoute dans ce topic les problème qui sont résolu

    Bonne journée
     
  2. JanoLapin
    JanoLapin WRInaute accro
    Inscrit:
    21 Septembre 2008
    Messages:
    4 250
    J'aime reçus:
    0
    Re: Pratique de Htacess : à lire avant de poser

    super, merci

    +1 reco
     
  3. XGilbert
    XGilbert WRInaute discret
    Inscrit:
    10 Avril 2007
    Messages:
    215
    J'aime reçus:
    0
    Re: Pratique de Htacess : à lire avant de poser

    merci +1 reco
     
  4. Madrileño
    Madrileño Membre Honoré
    Inscrit:
    7 Juillet 2004
    Messages:
    32 136
    J'aime reçus:
    273
    Re: Pratique de Htacess : à lire avant de poser

    Merci Mahdivitcheev pour ce tutoriel concernant la pratique de l'Htaccess. :)

    Par contre il faudrait corriger le titre du topic :
    "Pratique de Htacess : à lire avant de poser"
    au lieu de :
    "Pratique de Htaccess : à lire avant de poser"
    merci. :mrgreen:
     
  5. idefix
    idefix WRInaute occasionnel
    Inscrit:
    17 Janvier 2007
    Messages:
    251
    J'aime reçus:
    0
    Merci beaucoup je voulais me plonger la dedans depuis un moment. Les deux sujets sont vraiment très utiles.
    Par contre serait-il possible d'y ajouter ce que signifie par exemple
    Options +FollowSymlinks et surtout ce genre de choses : [R=301,NC,L] ?
     
  6. mahdivitchee
    mahdivitchee WRInaute discret
    Inscrit:
    22 Mars 2010
    Messages:
    168
    J'aime reçus:
    0
    Bonjour Idefix

    si pas facile de t'explique ça surtout avec mon français :mrgreen:
    mais voila j'ai fait un petit recherche dans le net :wink:

    Rewrite

    ( source : ****http://www.nospheratus.com/linux/apache/rewrite.php)
    voila un petit résumé
    -----------------------------------------------------------------

    RewriteEngine :
    Syntax: RewriteEngine on|off
    Default: RewriteEngine off
    La directive RewriteEngine active ou désactive le moteur de réécriture. Si elle est à OFF alors il n'y a pas de réécriture.


    RewriteCond : (plus d'info dans le site dessus )
    Syntax: RewriteCond Chainetesté Condition
    Default: Aucun
    La directive RewriteCond définit un condition dans une règle de réécriture.

    * 'nocase|NC' (no case) - retire le case sensitive
    * 'ornext|OR' (or next condition) - permet la combinaison de deux conditions avec un OR (ou) :

    Exemple : >>> Pour afficher une page d'accueil en fonction du navigateur de l'internaute :
    Code:
     RewriteCond %{HTTP_USER_AGENT} ^Mozilla.*
    RewriteRule ^/$ /homepage.mozilla.html [L]
    RewriteCond %{HTTP_USER_AGENT} ^Lynx.*
    RewriteRule ^/$ /homepage.text.html [L]
    RewriteRule ^/$ /homepage.autres.html [L]

    et le plus important :

    RewriteRule :
    Syntax: RewriteRule Pattern Substitution
    Default: Aucun

    La RewriteRule est une directive de réécriture assez brutale. Cette directive passe avant tout autre script. Chaques directive définit une seule règle de réécriture. L'ordre de définition de ces règles est important, car si la dernière est cachée par la première alors celle-ci ne s'appliquera pas.

    >>> flags :

    --- 'redirect|R [=code]' (force redirect) : pour forcer une redirection externe
    --- 'last|L' (last rule) : Arrête le processus de réécriture.
    --- 'nocase|NC' (no case) : Supprime le case-insensitive
    les autres flags dans le site :wink:


    qu'il que exemple dans le net :

    voila qu'il code utile :

    >> Code pour sécuriser un site contre les hacker
    Code:
    RewriteCond %{QUERY_STRING} ^(.*&)?error=http://
    RewriteRule ^(.*/)?errors.php - [F,L]
    
    >> Redirection en gardent l'url origine
    Code:
    RewriteEngine On
    RewriteRule ^(.*)$ http://www.domaine2.com/$1 [P]
    
    #virtual host
    <VirtualHost ip:port>
    ServerName domaine1.com
    ProxyPass / http://www.domaine2.com/
    </VirtualHost>
    
    >> Redirige tout un répertoire vers sous domaine
    Code:
    RewriteEngine on
    RewriteRule ^forum/(.*)$ http://forum.example.com/$1 [QSA,R=301,L]
    
    >> Faire une réécriture ou une redirection que si le fichier n'existe pas
    Code:
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ...
    
    Bonne journée
     
  7. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 841
    J'aime reçus:
    249
    Je me demande toujours pourquoi les gens s'attardent avec l'URL Rewriting alors qu'un simple explode() de $_SERVER['PATH_INFO'] ou d'un $_GET['url'] pourrait faire l'affaire.
    (Pour un script tout fait, OK je comprend, mais pour du développement maison...)

    PATH_INFO:
    Code:
    www.example.com/index.php/module/action/param1/param2
    
    _GET:
    Code:
    www.example.com/index.php?url=/module/action/param1/param2
    
    Il n'y a besoin que de quelques lignes simples de rewrite pour ces 2 solutions pour transformer en URLs user/seo friendly:
    Ex avec PATH_INFO:
    Code:
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.+)$ index.php/$1 [L,QSA]
    
    http://www.example.com/module/action/param1/param2

    Et tous les traitements en PHP:
    Code:
    <?php 
    list(, $module, $action, $param1, $param2) = explode('/',$_SERVER['PATH_INFO']);//Ou $_GET['url']
    ?>
    
    Si le rewrite était absent, ces 2 solutions en non rewritées ne posent pas de problème non plus.
     
  8. vitalizo
    vitalizo WRInaute impliqué
    Inscrit:
    27 Novembre 2005
    Messages:
    962
    J'aime reçus:
    0
    Un petite ligne sur le disallow serait interressante aussi :)
     
  9. mahdivitchee
    mahdivitchee WRInaute discret
    Inscrit:
    22 Mars 2010
    Messages:
    168
    J'aime reçus:
    0
    merci spout pour les codes et pour le lien :wink:
     
  10. LuciferX
    LuciferX WRInaute discret
    Inscrit:
    29 Septembre 2006
    Messages:
    62
    J'aime reçus:
    0
  11. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 841
    J'aime reçus:
    249
  12. cedric_g
    cedric_g WRInaute accro
    Inscrit:
    18 Janvier 2006
    Messages:
    2 958
    J'aime reçus:
    0
    Super ce post, une reco :)
     
  13. Blount
    Blount WRInaute impliqué
    Inscrit:
    18 Novembre 2010
    Messages:
    707
    J'aime reçus:
    0
    Je trouve la fonction censée nettoyer le code, complètement inutile et mal conçu.
    Rappel :
    Code:
        function nettoyage($text)
        {
           $separator = "-";
           $tofind = "àáâãäåòóôõöøèéêëçìíîïùúûüÿñ"; // Lettre accentuées
           $replac = "aaaaaaooooooeeeeciiiiuuuuyn"; // Equivalent non accentué
           $text = strtr(strtolower($text),$tofind,$replac);
           $text = ereg_replace("[^a-z0-9.]", $separator, $text);
           while (strstr($text, $separator . $separator))
              $text = str_replace($separator . $separator, $separator, $text);
           if (substr($text, 0, 1) == $separator)
              $text = substr($text, 1);
           return(ereg_replace($separator . "$", "", $text));
        }
    * fonction non compatible avec UTF-8.
    * je remplacerai la boucle "while" et la condition (if) suivante par un "preg_replace" et un "trim"
    * le "ereg_replace" sera compris dans le "trim".

    Bref. Pour supprimer les accents d'une chaîne de caractères, il est préférable d'utiliser la fonction "iconv". J'ai d'ailleurs écris un article au sujet de la suppression des accents avec iconv.
     
  14. WebRankInfo
    WebRankInfo Admin
    Membre du personnel
    Inscrit:
    19 Avril 2002
    Messages:
    19 138
    J'aime reçus:
    350
    Merci, d'ailleurs je vais épingler cette discussion dans ce forum ;-)
     
  15. elembius
    elembius WRInaute occasionnel
    Inscrit:
    9 Juin 2010
    Messages:
    353
    J'aime reçus:
    0
    coool merci pour le résumé
    une ptite reco en prime pour le sujet intéressant.

    ne t'en fait pas pour ton français il va très bien... surtout mieux que nous si on devait parler dans ta langue.
    ++elembius
     
  16. herykid83
    herykid83 Nouveau WRInaute
    Inscrit:
    20 Juillet 2011
    Messages:
    1
    J'aime reçus:
    0
    SVP aidez moi
    comment on fait du urlrewriting ??

    je voudrai reecrire l'url www.monsite.com/presentation.php en www.monsite.com/prestation-de-service/presentation.php

    Voici ce que j'ai fais dans mon htaccess ( la redirection marche, mais les images du site et le fichier css ne s'affichent plus ) :

    # fichier .htaccess
    Options FollowSymLinks
    RewriteEngine on
    RewriteRule ^prestation-de-service/css/all.css$ css/all.css [L]
    RewriteRule ^/images/.*$ images/.* [L]
    RewriteRule ^prestation-de-service/presentation.php$ presentation.php [L]

    L'arborescence du site est comme suit :
    presentation.php
    -> css -> all.css
    -> images -> tous les fichiers images

    Merci d'avance
     
  17. jst
    jst Nouveau WRInaute
    Inscrit:
    25 Novembre 2011
    Messages:
    29
    J'aime reçus:
    0
    Salut !

    Je repars sur une réécriture via PATH_INFO qui me semble très cool, le pb est que je n'arrive pas à faire générer la variable par Apache (wampserver 2.2)... un coup de main serait le bien venu ..

    Merci d'avance

    Sébastien
     
  18. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 841
    J'aime reçus:
    249
    J'ai fais un tuto plus complet, il y a d'autres techniques si PATH_INFO fonctionne pas:
    -http://goo.gl/Vnkh1
     
  19. jst
    jst Nouveau WRInaute
    Inscrit:
    25 Novembre 2011
    Messages:
    29
    J'aime reçus:
    0
    Cool !


    Merci pour le lien

    Sébastien
     
  20. studio-creations
    studio-creations WRInaute discret
    Inscrit:
    25 Janvier 2011
    Messages:
    165
    J'aime reçus:
    0
    Vraiment super ces petites astuces sur le .htaccess, en quelques minutes de lecture j'ai pu réaliser sans problème ce dont j'avais besoin :D
     
  21. desabillemoi
    desabillemoi Nouveau WRInaute
    Inscrit:
    21 Juin 2010
    Messages:
    5
    J'aime reçus:
    0
    Bonjour,

    Merci pour ces différentes pratiques, cependant je ne trouve pas ce que je recherche ! J'ai besoin de rediriger un trafic géolocalisé.

    En gros j'ai des sites étrangers qui génèrent du trafic français et j'aimerai détecter le trafic fr puis le rediriger sur une url France (sous forme d'un fichier htaccess)

    On m'a donné ca mais ca ne fonctionne pas...

    RewriteEngine on
    RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^FR$
    RewriteRule ^(.*)$ http://www.url.fr$1 [R,L]

    Merci d'avance pour votre aide,
    David
     
  22. iLuc
    iLuc WRInaute discret
    Inscrit:
    14 Avril 2009
    Messages:
    114
    J'aime reçus:
    0
    Bonsoir,
    Une fonction très efficace pour le rewrite: 8)

    Code:
    function rewrite_url( $url, $type = '' ) {
    	$url = preg_replace("`\[.*\]`U","",$url);
    	$url = preg_replace('`&(amp;)?#?[a-z0-9]+;`i','-',$url);
    	$url = htmlentities($url, ENT_NOQUOTES, 'utf-8');
    	$url = preg_replace( "`&([a-z])(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig);`i","\\1", $url );
    	$url = preg_replace( array("`[^a-z0-9]`i","`[-]+`") , "-", $url);
    	$url = ( $url == "" ) ? $type : strtolower(trim($url, '-'));
    	$url = preg_replace('/---/U', '-', $url);
    	$url = preg_replace('/--/U', '-', $url);
    return $url;
    }
     
  23. Liste-riad
    Liste-riad WRInaute discret
    Inscrit:
    17 Décembre 2010
    Messages:
    64
    J'aime reçus:
    0
    Merci bq
     
  24. web83
    web83 Nouveau WRInaute
    Inscrit:
    31 Janvier 2013
    Messages:
    1
    J'aime reçus:
    0
    Bonsoir,

    Je viens de lire cette page qui m'a l'air bien pratique mais je ne sais pas si cela répond à mon problème alors je viens vers
    vous pour trouver une solution.
    J'ai créée un site avec Web Acappella et celui-ci est hébergé sur ovh. En haut dans ma barre d'adresse, ce trouve le nom de mon site sous cette forme http://leschantiersdelajeunessefrancaiseamcjf.com/index.html
    Ma première question est où se trouve mon http:// alors que lorsque je fais un copier/coller il ressort.
    Ma deuxième question est, comment faire pour supprimer sur mes pages /index.html. et ne laisser que .com.

    Merci d'avance de me permettre d'y voir un peu plus claire.
     
  25. Liste-riad
    Liste-riad WRInaute discret
    Inscrit:
    17 Décembre 2010
    Messages:
    64
    J'aime reçus:
    0
    Bonjour web83

    C'est de navigateur :mrgreen:

    C'est simple ajouter ce code dans ton fichier htaccess

    Code:
    RewriteCond %{THE_REQUEST} ^(GET|POST|HEAD)\ (/.*)?/index.(htm|html|php|asp|shtml)
    RewriteRule ^(.*)index.(htm|html|php|asp|shtml)$ /$1 [R=301,L]

    Lire aussi ce topic : https://www.webrankinfo.com/forum/t/des-codes-pour-la-redirection-htaccess.110832/


    @+
     
  26. mtth
    mtth WRInaute discret
    Inscrit:
    22 Août 2014
    Messages:
    60
    J'aime reçus:
    0
    Bonjour merci pour ce topic et les exemples!!

    Par contre je n'arrive pas a faire quelque chose :

    J'aimerai rediriger: www.summaries.be/inschrijven.php

    Vers: www.summaries.be/inschrijven

    Mais je ne sais pas comment faire car mon serveur me montre un belle erreur 500 a chaque fois que j'essaie ... :'(

    Merci de votre aide

    Mtth
     
Chargement...
Similar Threads - Pratique Htaccess lire Forum Date
Favicon : bonnes pratiques Développement d'un site Web ou d'une appli mobile Hier à 10:18
la bonne pratique quand on enlève une gamme de produits e-commerce 8 Novembre 2019
Quid des règles de bonnes pratiques SEO pour l'administration d'un forum Référencement Google 10 Août 2019
Quelle est la bonne pratique pour indiquer une ou plusieurs localisations à Google ? YouTube, Google Images et Google Maps 4 Avril 2019
Les bonnes pratiques du fil d'Ariane Référencement Google 4 Mars 2019
Cas pratique d'une chute vertigineuse d'un site. Référencement Google 19 Octobre 2018
Maintenance programmée, bonnes pratiques SEO ? Administration d'un site Web 20 Avril 2018
Contenu dupliqué et référencement local - quelles bonnes pratiques ? Demandes d'avis et de conseils sur vos sites 6 Mars 2018
Les bonnes pratiques javascript Développement d'un site Web ou d'une appli mobile 19 Juin 2017
Site multilingue, les bonnes pratiques ? Débuter en référencement 7 Juin 2017
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice