IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

Réécriture url pour site multilingue


Sujet :

Apache

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut Réécriture url pour site multilingue
    Bonjour a tous et a toutes,

    j'essaye juste de mettre en place les reecritures pour obtenir site.com/fr/presentation/mission.php pour tout le site francais ou au lieu de site.com/presentation/mission.php?lang=fr au moment où l'utilisateur change la langue.
    j'aimerais juste preciser que la variable $lang est stockee dans un cookie, faut il proceder a la reecriture par un .htaccess ou juste PHP fera l'affaire??

    j'ai lu ce tuto mais j'ai un peu de mal a l'adapter: http://g-rossolini.developpez.com/tu...h%E9orie#LII-1

    Merci pour vos reponses

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Pas tout compris à ce que tu veux faire : tu veux juste changer l'URL au moment du changement de langue ou tout le temps ? Si c'est tout le temps, quel est l'intérêt de continuer à passer par un cookie ? On peut s'arranger pour que le paramètre lang figure tout le temps dans l'URL.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    Bonsoir _Mac_ et merci pour ta reponse.

    ummm, je reposerai la restion autrement alors
    pour la conception du site web en multilingue, j'ai opte pour une solution de fichiers de traduction en .xml, donc j'appelle le bon fichier selon la langue choisie, et pour se faire, j'inclus au debut de chaque page un fichier qui contient le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    function check_lang($lang)
    {
    	return preg_match('/^[[:alpha:]]+$/D', $lang) && is_file($_SERVER['DOCUMENT_ROOT'].'/new/inc/lang/'.$lang.'.xml');
    }
     
    if(isset($_GET['lang'])) // if the user changes the language
    {
    	$lang = (check_lang($_GET['lang'])) ? $_GET['lang'] : 'en';
    	setcookie('lang', $lang, time() + 31536000, '/new/'); // 1 year
    }
    else
    {
    	if(isset($_COOKIE['lang'])) $lang = (check_lang($_COOKIE['lang'])) ? $_COOKIE['lang'] : 'en';
    	else
    	{
    		list($lang, $country) = explode('-', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
    		if(check_lang($lang)) setcookie('lang', $lang, time() + 31536000, '/new/');
    		else $lang = 'en';
    	}
    }
     
    $sxml = simplexml_load_file($_SERVER['DOCUMENT_ROOT'].'/new/inc/lang/'.$lang.'.xml');
    comment pourrais je faire pour avoir en permanence une url du type monsite.com/fr/repertoir/fichier.php lorsqu'on est sur le site francais ??

    MErci

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Le plus simple, je pense, c'est de faire comme je suggérais : toujours avoir un paramètre lang dans l'URL qui reprend le premier "répertoire" de l'URL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteEngine on
    RewriteRule ^(fr|uk)/(.*) /$2?lang=$1 [QSA,L]
    Cela transformera /fr/repertoire/fichier.php en /repertoire/fichier.php?lang=fr (idem avec /uk/...). Il faut donc ensuite que /repertoire/fichier.php existe ou soit réécrit en un truc qui existe.

    Après, dans ton code, tu n'utilises plus les cookies pour toujours utiliser $_GET["lang"] ou alors le test revient à comparer le paramètre d'URL lang (s'il existe) avec la valeur du cookie : si c'est différent, c'est qu'il y a eu changement de langue.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    Le plus simple, je pense, c'est de faire comme je suggérais : toujours avoir un paramètre lang dans l'URL qui reprend le premier "répertoire" de l'URL :
    mais pourquoi il faut toujours avoir le parametre lang dans l'URL?? ne peut on pas nous servir uniquement du cookie?
    je dis ca parce que dans le script que je t'ai donne, comme tu as pu remarquer je verifie d'abord s'il y a eu un changement de langue, puis si un cookie existe, puis les parametres du clients...

    est ce que le parametre lang dans l'URL sera vraiment utile?
    moi je voyais plutot qlq chose de simple du genre:
    monsite.com/valeur_cookie/dosier1/.../page.php

    mais peut etre qu'il y a quelque chose qui m'echape etant donne que je n'ai pas d'experience dans ce domaine!!

    apres cette breve explication, dis moi e que je fais et je suivrai tes conseils a la lettre

    une autre petite question: que penses tu d'une redirection du genre:
    quand lang = fr -> www.bonjour.org
    lang = en -> www.hello.org
    lang = es -> www.hola.org

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par redah75 Voir le message
    mais pourquoi il faut toujours avoir le parametre lang dans l'URL?? ne peut on pas nous servir uniquement du cookie?
    Parce que, comme /fr apparaît toujours dans l'URL, c'est plus facile de toujours l'ajouter dans les paramètres d'URL. Faire un truc du style "vérifie que c'est la même chose que dans le cookie et si c'est différent ajoute le en tant que paramètre" dans un .htaccess ce n'est vraiment pas évident. Après,si ton code PHP est bien fait, tu as ce code de vérification des cookies dans un seul fichier PHP et il te suffit de le modifier comme je disais. Je trouve que la modification de ce seul code PHP c'est négligeable par rapport à un fonctionnement différent du .htaccess.

    Citation Envoyé par redah75 Voir le message
    est ce que le parametre lang dans l'URL sera vraiment utile?
    Aucune idée, tout dépend du fonctionnement que tu veux implémenter. Si j'avais à le faire pour mon propre site, j'opterais pour le fonctionnement que je décris : toujours ajouter le paramètre lang dans l'URL via le .htaccess et prendre en compte la valeur de ce paramètre dans mes fichiers. Je n'utiliserais pas les cookies.

    Citation Envoyé par redah75 Voir le message
    moi je voyais plutot qlq chose de simple du genre:
    monsite.com/valeur_cookie/dosier1/.../page.php
    Je ne comprends pas ce que tu veux dire : faire <a href="/<?php echo $_COOKIE["lang"]; ?>/dossier1/..." dans le .htaccess n'a aucune intérêt car la réécriture qui y est faite ne concerne que le serveur.

    Citation Envoyé par redah75 Voir le message
    apres cette breve explication, dis moi e que je fais et je suivrai tes conseils a la lettre
    JE propose des alternatives et après tu choisis

    Citation Envoyé par redah75 Voir le message
    une autre petite question: que penses tu d'une redirection du genre:
    quand lang = fr -> www.bonjour.org
    lang = en -> www.hello.org
    lang = es -> www.hola.org
    lang correspond à quoi ? La valeur du cookie ? La valeur d'un paramètre d'URL ? Le premier /xx/ des URL ? Dans tous les cas, une telle redirection est réalisable dans un .htaccess.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    Aucune idée, tout dépend du fonctionnement que tu veux implémenter. Si j'avais à le faire pour mon propre site, j'opterais pour le fonctionnement que je décris : toujours ajouter le paramètre lang dans l'URL via le .htaccess et prendre en compte la valeur de ce paramètre dans mes fichiers. Je n'utiliserais pas les cookies.
    OK, c'est a dire que le cookie ne servira que pour la detection de langue et rediriger l'internaute vers la bonne langue?? ca me va )

    lang correspond à quoi ? La valeur du cookie ? La valeur d'un paramètre d'URL ? Le premier /xx/ des URL ? Dans tous les cas, une telle redirection est réalisable dans un .htaccess.
    oui a la valeur du cookie
    mais est ce une bonne idee d'avoir des nom de domaines differents selon la langue? je pense que ca aidera enormement pour le referencement!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteEngine on
    RewriteRule ^(fr|uk)/(.*) /$2?lang=$1 [QSA,L]
    je vais tester ce code.
    etant donné que je le nouveau site que je cree se trouve dans un repertoire temporaire: monsite.com/new, le code devient RewriteRule ^new/(fr|uk)/(.*) ??

    Merci

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    je viens de faire des tests et ca n a pas l'air de marcher
    j'ai mis dans le htaccess situé dans www->new:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^/new/(fr|en)/(.*) /$2?lang=$1 [QSA,L]
    et quand je tape http://www.iifiir.org/new/en/home/index.php j'ai l'errur 404 alors que http://www.iifiir.org/new/home/index.php existe bien

    une idee pour ca?
    Merci

  9. #9
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Y a 2 erreurs dans ta règles : tu perds le /new dans la cible (second paramètre du RewriteRule) et dans un .htaccess, le premier membre d'un RewriteRule ne peut pas commencer par /, il est omis. Ca donnerait donc plutôt ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^new/(fr|en)/(.*) /new/$2?lang=$1 [QSA,L]

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    eh non, toujours pas!!
    vous pouvez tester en cliquant sur le lien que j'ai donné précédemment

  11. #11
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Tu peux donner le .htaccess complet ? Chez moi, la règle que je donne fonctionne correctement. J'imagine qu'il y a un effet de bord avec d'autres règles. Est-ce bien dans le fichier .htaccess à la racine du site que tu as mis cette règle ?

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    je te le donnerai demain le htaccess, je ne suis pas au travail.

    Est-ce bien dans le fichier .htaccess à la racine du site que tu as mis cette règle ?
    non, le htaccess n'est pas a la racine du serveur (www) mais a la racine du site (new) qui est un sous dossier de www.
    je pense que ce n'est pas une bonne idee de mettre le nouveau site dans un sous dossier du site actuel!!
    le site actuel est www.iifiir.org
    et le nouveau sur lequel je travaille est www.iifiir.org/new

    y a t il une autre maniere de le faire? avec le virtualhost???
    je viens de trouver ce lien: http://www.pyrat.net/Multi-homing-pl...ur-Apache.html
    est ce une bonne reference?

    merci bien

  13. #13
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par redah75 Voir le message
    non, le htaccess n'est pas a la racine du serveur (www) mais a la racine du site (new) qui est un sous dossier de www.
    C'est pour ça que ça ne marche pas : vu qu'il est déjà dans new, ce n'est pas la peine de répéter new dans le premier membre du RewriteRule, il est implicite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(fr|en)/(.*) /new/$2?lang=$1 [QSA,L]
    Citation Envoyé par redah75 Voir le message
    je pense que ce n'est pas une bonne idee de mettre le nouveau site dans un sous dossier du site actuel!!
    ...
    y a t il une autre maniere de le faire? avec le virtualhost???
    Je suis d'accord, ce n'est pas idéal dans le sens où les URL relatives qui marchent dans un sous-dossier ne marche pas forcément à la racine du site. Comme tu l'indiques, les virtual hosts sont l'alternative à utiliser : au lieu de travailler avec www.iifiir.org tu travailleras avec www2.iifiir.org par exemple mais du coup tous les répertoires, .htaccess, etc. resteront valables lorsque tu passeras en prod à condition de ne pas coder le nom du site (www.iifiir.org) dans tes fichiers. Le tuto me semble correct.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    Bonjour Mac, tu as raison, ce que tu m'as donné fonctionne A LA RACINE, mais j'ai enleve le new du debut pour que ca marche egallement si je place le htaccess dans le dossier "new".
    dans le meme htaccess j'ai cette redirection: RedirectMatch permanent ^/new/about-us/$ /new/about-us/mission.php mais qui fonctionne uniquement si je mets le /new au debut, pourquoi est ce different du RewriteRule que tu viens de me donner?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(fr|en)/(.*) /new/$2?lang=$1 [QSA,L]
    quelle est la signification de QSA???
    etant donné que ca ne concernera pas que fr et en, j'ai remarque que si je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([a-z]{2})/(.*) /new/$2?lang=$1
    et que je rentre cette url site.com/es/fichier.php et que la langue es n'est pas dispo, il me renvoie vers l'anglais qui est par defaut, comment faire pour afficher une error 404??

    je vais faire tout de suite le necessaire pour les VH. et merci encore une fois pour ton aide et conseils..?.

  15. #15
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par redah75 Voir le message
    dans le meme htaccess j'ai cette redirection: RedirectMatch permanent ^/new/about-us/$ /new/about-us/mission.php mais qui fonctionne uniquement si je mets le /new au debut, pourquoi est ce different du RewriteRule que tu viens de me donner?
    Le fait que le new est implicite est propre à mod_rewrite. RedirectPermanent s'appuie sur un autre module qui ne regarde que l'URL complète demandée par l'utilisateur, pas celle simplifiée utilisée par mod_rewrite. Mais ce que tu peux faire c'est utiliser mod_rewrite pour faire ta redirection, comme ça tu peux ignorer le "new" et ton .htaccess fonctionnera dans un autre répertoire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^about-us/$ /new/about-us/mission.php [R=301]
    Citation Envoyé par redah75 Voir le message
    quelle est la signification de QSA???
    Si on regarde la doc (ça sert toujours), QSA signifie Query String Append. Ca permet de faire en sorte que quand tu ajoutes des paramètres d'URL à la suite d'un RewriteRule ce paramètre est ajouté aux paramètres d'URL déjà existant et ne fait pas un "remplace". Sans le QSA, si l'URL demandée par l'utilisateur contient déjà des paramètres, ces paramètres seront ignorés à l'issue de la réécriture, ce qui peut être gênant.

    Citation Envoyé par redah75 Voir le message
    etant donné que ca ne concernera pas que fr et en, j'ai remarque que si je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([a-z]{2})/(.*) /new/$2?lang=$1
    et que je rentre cette url site.com/es/fichier.php et que la langue es n'est pas dispo, il me renvoie vers l'anglais qui est par defaut, comment faire pour afficher une error 404??
    Ben garder (en|fr), non ? Quel est l'intérêt de passer à une règle plus générique si le générique n'est pas supporté ?

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^about-us/$ /new/about-us/mission.php [R=301]
    ah oui ca marche aussi nickel
    cote performance, c'est la meme chose? quelle slution auriez vous choisie?

    Si on regarde la doc (ça sert toujours), QSA signifie Query String Append. Ca permet de faire en sorte que quand tu ajoutes des paramètres d'URL à la suite d'un RewriteRule ce paramètre est ajouté aux paramètres d'URL déjà existant et ne fait pas un "remplace". Sans le QSA, si l'URL demandée par l'utilisateur contient déjà des paramètres, ces paramètres seront ignorés à l'issue de la réécriture, ce qui peut être gênant.
    Merci pour l'explication.

    Ben garder (en|fr), non ? Quel est l'intérêt de passer à une règle plus générique si le générique n'est pas supporté ?
    donc le jour ou j'ai par exemple l'espagnol et italien qui se rajoutent, je dois a la main mettre (en|fr|it|es) ??

    oh lalaa, je galere pour parametrer le httpd.conf afin d'avoir 2 sites avec 2 adresses differentes, genre localhost et localhost1.
    j'ai donc bien mis pour le DocumentRoot le bon chemin: "chemin/www/site1"
    mais je ne vois pas trop quoi faire pour le 2e site!!
    j'ai mis ceci selon la doc que j'ai trouvé sur internet mais ca ne marche pas!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <VirtualHost 127.0.0.1:80>
      DocumentRoot "/Users/Redani/Sites/www/new"
      ServerName localhost1
    </VirtualHost>
    juste pour precision, je suis sur mac OS 10.6, j'utilise le PHP et apache fournis par le systeme

    merci de ton aide

  17. #17
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par redah75 Voir le message
    cote performance, c'est la meme chose? quelle slution auriez vous choisie?
    Oui. Après, c'est une question d'organisation : certains préfèrent mettre tout dans un .htaccess à la racine du site, d'autres dans les .htaccess des différents répertoires. Cependant, pour ton cas vu qu'à terme le répertoire "new" va disparaître, il faut considérer que new est le document root donc il faut utiliser le .htaccess de new comme si c'était celui de la racine du site. Donc dans ce cas précis, laisse cette règle dans le .htaccess de new : quand tu déplaceras le contenu de répertoire à sa place définitive, tu n'auras pas de problème.

    Citation Envoyé par redah75 Voir le message
    donc le jour ou j'ai par exemple l'espagnol et italien qui se rajoutent, je dois a la main mettre (en|fr|it|es) ??
    Oui

    Citation Envoyé par redah75 Voir le message
    ca ne marche pas!
    C'est-à-dire ? Un peu flou comme description de symptôme

    Ce qui est important pour les VH, c'est de s'assurer qu'il y a bien un NameVirtualHost x:y quelque part dans la conf pour chacun de tes <VirtualHost x:y>. Par exemple, tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <VirtualHost 127.0.0.1:80>
    donc il faut que ta conf contienne quelque par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NameVirtualHost 127.0.0.1:80
    Si ce n'est pas le cas, c'est certain que ça ne peut pas bien marcher.

    Ensuite, tu as mis ceci :
    Ca veut dire que tu veux accéder le VH en tapant http://localhost1/... Est-on d'accord ? Du coup, vu que ton VH est 127.0.0.1:80, il faut que localhost1 soit mapé sur l'IP 127.0.0.1. Donc modifie ton fichier /etc/hosts pour ajouter ceci :
    comme ça, Safari saura que quand tu demandes http://localhost1/... il faut aller se connecter à 127.0.0.1, port 80, et Apache sera retrouver le VH correspondant grâce au NameVirtualHost et au ServerName.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    Oui. Après, c'est une question d'organisation : certains préfèrent mettre tout dans un .htaccess à la racine du site, d'autres dans les .htaccess des différents répertoires. Cependant, pour ton cas vu qu'à terme le répertoire "new" va disparaître, il faut considérer que new est le document root donc il faut utiliser le .htaccess de new comme si c'était celui de la racine du site. Donc dans ce cas précis, laisse cette règle dans le .htaccess de new : quand tu déplaceras le contenu de répertoire à sa place définitive, tu n'auras pas de problème.
    Cool, merci

    Oui
    OK, ca ne risque pas de se produire tous les mois, donc y a pas de soucis a rajouter la langue...

    concernant localhost1, je ne sais comment te remercier, tu es un sauveur, voila ce que je peux te dire
    il fallait juste que je declare localhost dans etc/hots.
    NameVirtualHost 127.0.0.1:80 n'etait pas necessaire, c'est normal?

    je ferais plus de tests et te tiendrai au courant

  19. #19
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par redah75 Voir le message
    NameVirtualHost 127.0.0.1:80 n'etait pas necessaire, c'est normal?
    Même si a l'air de fonctionner correctement sans, il est absolument nécessaire : il faut autant de NameVirtualHost x:y qu'il y a de <VirtualHost x:y> différents. Si tu as 3 VH avec <VirtualHost *:80> par exemple, tu ne mets qu'un seul NameVirtualHost *:80, pas la peine de le mettre 3 fois, mais si tu as <VirtualHost *> et <VirtualHost 127.0.0.1:80>, il te faut un NameVirtualHost * et un NameVirtualHost 127.0.0.1:80.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    Même si a l'air de fonctionner correctement sans, il est absolument nécessaire : il faut autant de NameVirtualHost x:y qu'il y a de <VirtualHost x:y> différents. Si tu as 3 VH avec <VirtualHost *:80> par exemple, tu ne mets qu'un seul NameVirtualHost *:80, pas la peine de le mettre 3 fois, mais si tu as <VirtualHost *> et <VirtualHost 127.0.0.1:80>, il te faut un NameVirtualHost * et un NameVirtualHost 127.0.0.1:80.
    Parfait! merci beaucoup pour l'explication.

    Le fait que le new est implicite est propre à mod_rewrite. RedirectPermanent s'appuie sur un autre module qui ne regarde que l'URL complète demandée par l'utilisateur, pas celle simplifiée utilisée par mod_rewrite. Mais ce que tu peux faire c'est utiliser mod_rewrite pour faire ta redirection, comme ça tu peux ignorer le "new" et ton .htaccess fonctionnera dans un autre répertoire
    etant donné que maintenant je travaille autrement, sans le /new/, est il mieux d'utiliser RedirectMatch permanent ^/new/about-us/$ /new/about-us/mission.php ou ce que tu m'as donné : RewriteRule ^about-us/$ /new/about-us/mission.php [R=301], je parle en terme de performance et rapidité d'execution.

    j'aurais 3 toute petites dernieres questions
    1-concernant les langues, j'avais dit plus tot:
    quand lang = fr -> www.bonjour.org
    lang = en -> www.hello.org
    lang = es -> www.hola.org
    est ce une bonne idee d'acheter un domaine par langue? et dans ce cas la, a quoi ressemblera la redirection dans le htaccess?

    2- quand le site est en maintenance, je met le code suivant dans un htaccess et qui marche bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteCond %{REQUEST_URI} !/index-constructions.php$
    RewriteCond %{REQUEST_URI} !^/.*\.(gif|css|jpg|png)$
    RewriteCond %{REMOTE_ADDR} !80.118.183.228
    RewriteRule $ /index-constructions.php [R=302,L]
    est ce correct ou y a t il mieux a faire?

    3- pour forcer une page a etre executee en https, j'ai lu ce tuto: http://apache.developpez.com/faq/?pa...irection_https
    etant donné que le SSL ne concernera pas forcement TOUT un dossier mais uniquement certaines pages, quelle methode est conseillé a utiliser??
    je pencherai personnelement sur la 3e solution du tuto, mais est elle aussi performante et rapide que si c'est avec un htaccess??

    MErci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. GWT et sitemaps pour site multilingue
    Par redah75 dans le forum Référencement
    Réponses: 2
    Dernier message: 13/03/2014, 20h37
  2. [2.x] Intégration bundle A2LiX pour site multilingue
    Par LEF97 dans le forum Symfony
    Réponses: 1
    Dernier message: 23/11/2013, 17h55
  3. Google Sitemap pour site multilingues
    Par redah75 dans le forum Référencement
    Réponses: 0
    Dernier message: 03/06/2012, 22h15
  4. Aide pour Site Multilingue
    Par Ikonic dans le forum Flash
    Réponses: 2
    Dernier message: 11/04/2007, 11h23
  5. [XML] XML pour site multilingue
    Par zorian dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 07/06/2006, 21h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo