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 :

htaccess pour https, www. et récrécriture


Sujet :

Apache

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 671
    Points : 128
    Points
    128
    Par défaut htaccess pour https, www. et récrécriture
    Bonjour,

    J'ai un .htaccess avec quelques règles de réécritures qui fonctionnent bien.

    Suite à changement de serveur et certificat SSL, je veux le perfectionner pour faire :

    1) afficher les monsite.com en www.monsite.com
    2) afficher https
    Donc https://www.monsite.com

    Cela tout en continuant le réécriture d'URL.

    Je suis pas expert du truc, j'ai pris des bouts de code sur Internet mais ça ne marche pas.

    Sur mon site du test, je commence par essayer la réécriture des www. mais cela ne fonctionne pas et je ne comprends pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    RewriteEngine on
     
    Rewritecond %{HTTP_HOST} ^site.com(.*)$
    RewriteRule ^http://site.com(.*)$ http://www.site.com$1 [QSA,R]
     
    RewriteRule .-([A-Z][1-9]A[LM234])-([0-9]+)\.html$ b.php?a=$1&h=$2&c=Voi [L]
    RewriteRule .-([A-Z][1-9]AL)\.html$ b.php?h=$1&c=Apa [L]
    etc...
    Merci d'avance.

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Bonjour.

    Vous devez échappez le "." dans la partie gauche de la règle de réécriture.

    Attention : Certains hébergeurs gèrent le "www" (Que vous tapiez http://www.monsite.com ou http://monsite.com, on accèdera au site...). Il est donc inutile de faire cela, car vous allez devoir réécrire vos liens dans tout votre site). Less is more...

    P.S : Que vouliez-vous faire dans les 2 règles suivantes ?... (en prose S.V.P, pas en code...)

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 671
    Points : 128
    Points
    128
    Par défaut
    Bonjour,

    Merci beaucoup de tes réponses.

    Citation Envoyé par iakou Voir le message
    Vous devez échappez le "." dans la partie gauche de la règle de réécriture (d'ailleurs vous le faites bien dans les règles suivantes...)
    Quel est le sens de l'échappement du "." ?
    C'est moi qui ai écrit les règles qui suivent mais j'avoue que j'ai un peu oublié.

    Citation Envoyé par iakou Voir le message
    Attention : Certains hébergeurs gèrent le "www" (Que vous tapiez http://www.monsite.com ou http://monsite.com, on accèdera au site...). Il est donc inutile de faire cela, car vous allez devoir réécrire vos liens dans tout votre site). Less is more...
    Je suis chez OVH qui gère effectivement les accès au site avec ou sans "www".
    Mon problème n'est pas l'accès au site mais le référencement.
    J'ai lu qu'il est meilleur de choisir d'imposer une seule URL aux robots, donc il faut choisir entre www.site.com et site.com.
    Je vois que les grands sites sont souvent références sous www.site.com, donc j'essaye de faire pareil.
    Pour faire cela bien, il faudrait que les règles de réécriture qui suivent puissent s'appliquer, c'est pourquoi je n'ai pas mis de drapeau [L] pour le passage en "WWW" mais comme c'est une redirection je ne sais pas trop ce qui se passe derrière.

    Mon autre problème et de forcer le https qui lui n'est pas automatique chez OVH en mutu, même avec un certificat SSL.

    Donc mon idée :
    retouter en https et www
    puis appliquer les règles de réécriture.
    Peut-être faut-il mieux faire l'inverse, je ne connais rien à Appache.

    Citation Envoyé par iakou Voir le message
    P.S : Que vouliez-vous faire dans les 2 règles suivantes ?... (en prose S.V.P, pas en code...)
    Les règles suivantes fonctionnennet, pas de souci à ce niveau.
    C'est de la réécriture d'URL classique pour afficher en mot-clé.html des URL dynamiques.

  4. #4
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Rewritecond %{HTTP_HOST} ^site\.com(.*)$
    RewriteRule ^http://site\.com(.*)$ http://www.site.com$1 [R=301, L]
    Ou alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Rewritecond %{HTTP_HOST} ^site\.com
    RewriteRule ^http://(.*)$ http://www.$1 [R=301, L]
    Mais je persiste à croire que c'est inutile. Les robots fureteurs gérent très bien ce www...

    Par ailleurs, êtes vous certain que les dernières règles fonctionnent ?... (des caractères spéciaux n'étant pas "échappés")

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 671
    Points : 128
    Points
    128
    Par défaut
    Bonjour,

    Merci beaucoup de ta réponse.

    Je comprends, il faut échapper le ".".

    Quelle est la signifiacation du . non échappé qui commence les denrières règles, j'ai oublié et n'arrive pas à mettre le main sur la doc ?

    La dernière règle fonctionne à ma connaissance, qu'est-ce qui devrait être échappé ?

    Est-ce que c'est utile au référencement, je reviens vers toi à ce sujet.

  6. #6
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Je comprends, il faut échapper le ".".
    Vous devez échapper le "." quand il y a appel à une regex (Dans une RewriteRule, c'est en partie gauche. Dans une RewriteCond, c'est à droite)

    Pour moi, des "RewriteRule" qui commencent par un point, ça doit pas le faire !... (mais je ne suis pas expert ès htaccess...)

    Cdlt

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 671
    Points : 128
    Points
    128
    Par défaut
    Bonjour,

    Encore merci de votre suivi.

    Je fais un test dès que je peux et vous tiens au courant.

    Par ailleurs, je ne pas trop comment procède Google pour le choix de l'URL affiché pour un lien référencé.

    Parfois : https://www.site.com/etc...
    Parfois www.site.com/etc...

    Dans mon sitemap, j'indique https://www.site.com/etc... mais je pense que cela n'a pas d'importance.
    D'après sitemap.org, il faut donner des liens complets en http ou https.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 671
    Points : 128
    Points
    128
    Par défaut
    Bonjour,

    J'applique cette règle exactement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Rewritecond %{HTTP_HOST} ^site\.com(.*)$
    RewriteRule ^http://site\.com(.*)$ http://www.site.com$1 [R=301,L]
    Ne provoque pas d'erreur mais ne sert à rien.

    site.com dans la barre d'adresse reste site.com

    Je ne comprends pas...

  9. #9
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Bonjour.

    Moi non plus !... Essayez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rewritecond %{HTTP_HOST} ^site\.com$
    Bien que le (.*) figurant dans votre condition, aurait dû être ignoré puisqu'il signifie "tout caractère, un nombre quelconque de fois, zéro y compris)...

    Ou alors le sous domaine "www" n'existe pas chez votre hébergeur, vous devez le configurer !...

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 671
    Points : 128
    Points
    128
    Par défaut
    Bonjour,

    Encore merci de votre suivi.

    Le sous domaine www existe bien.
    Je ferai des essais ce soir, je vous tiens au courant.

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 671
    Points : 128
    Points
    128
    Par défaut
    Bonsoir,

    Le code indiqué dans la doc OVH est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Rewritecond %{HTTP_HOST} ^exemple.com$
    Rewriterule ^(.*) http://www.exemple.com/$1 [QSA,L,R=301]
    Je ne comprends pas la règle, il me semble que $1 vaut exemple.com/etc. et donc que l'on réécrit http://www.exemple.com/exemple.com/etc.

  12. #12
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Bonjour.

    Comme je le disais plus haut, je ne suis pas expert ès htaccess (c'est le moins qu'on puisse dire...)

    Ce que je conçois, néanmoins :

    - Quand la doc OVH mentionne ^(.*) cela signifie tout le lien. Le $ terminal de la regex n'est pas utile, si on avait écrit ^(.*)$ c'était pareil...
    - Tout dépend de la façon dont l'adresse est écrite : Relative <a href="toto.html"> ou absolue <a href="http://site.com/toto.html">.
    - La doc OVH sous entend ici que les adresses sont relatives !

    Ainsi :
    Rewritecond %{HTTP_HOST} ^exemple.com$
    Rewriterule ^(.*) http://www.exemple.com/$1 [QSA,L,R=301]
    va faire qu'un lien <a href="toto.html"> sera redirigé vers http://www.exemple.com/toto.html. D'ailleurs ils auraient dû écrire $0 et non pas $1 ($0 signifiant la chaine complète, alors que $1 à $9 sont des références à des fractions de la chaine. Il manque aussi l'anti-slash devant le point dans la RewritCond)

    Cela suppose aussi que le sous-domaine "www" existe, mais en toute humilité je dois bien avouer que je n'ai jamais exploré les possibilités des sous-domaines. Pour moi c'est encore obscur !

    - Par exemple, on dit que www est sous-domaine alors qu'on place le "www" en 1er ???...
    - Dans http://blog.site.com, blog est sous domaine de site.com ???...

    Pour en revenir à nos moutons, tout dépend de la façon dont sont écrits nos liens.

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 671
    Points : 128
    Points
    128
    Par défaut
    Bonjour,

    Encore merci de votre suivi.

    Vous avez sans doute raison pour les adresses relatives.

    La règle OVH est très insuffisante car si des pages sont dans un dossier cela ne marche plus.

    Tout doit être à la racine.

    Par ailleurs je comprends (un peu) les rewrirerule mais pas les rewritecond

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Rewritecond %{HTTP_HOST} ^exemple.com$
    Que désigne HTTP_HOST ?
    Pas de tttp://

  14. #14
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    La règle OVH est très insuffisante car si des pages sont dans un dossier cela ne marche plus.
    Je ne pense pas. Il faut replacer cette directive dans son contexte (la doc où elle a été extraite). OVH est une société qui a pignon sur rue !...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rewritecond %{HTTP_HOST} ^exemple\.com$
    Dans cette ligne la variable globale $_SERVER['HTTP_HOST'] est comparée à la chaine de longueur finie "exemple.com".
    On teste le nom de l'hôte, c'est à dire le nom du site...

    Je vous donne un lien sur l'url rewriting : https://craym.eu/tutoriels/reference...rewriting.html
    Il faut un peu s'accrocher mais c'est accessible....

    Cdlt

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 671
    Points : 128
    Points
    128
    Par défaut
    Bonjour,

    Encore merci.

    Citation Envoyé par iakou Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rewritecond %{HTTP_HOST} ^exemple\.com$
    Dans cette ligne la variable globale $_SERVER['HTTP_HOST'] est comparée à la chaine de longueur finie "exemple.com".
    On teste le nom de l'hôte, c'est à dire le nom du site...
    La valeur de $_SERVER['HTTP_HOST'] est-elle www.exemple.com si on tape www dans la barre d'adresse ou exemple.com si on ne tape pas www ?

    Je vais faire le test dès que possible.

    Merci aussi pour le lien vers l'article, ce n'est pas difficile à comprendre mais mal expliqué.

  16. #16
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Bonsoir.

    Dans une de vos pages en ".php", ajoutez cela :
    Vous obtiendrez l'affichage de toutes les variables globales...

    Effectivement c'est intéressant de savoir ce qu'on a dans HTTP_HOST en cas de sous-domaine. Je parie pour www.site.com... A vérifier...
    Comme je vous le disais, je n'ai pas approfondi cette affaire de sous-domaine, dont je perçois faiblement l'utilité...

    Cdlt

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 671
    Points : 128
    Points
    128
    Par défaut
    Bonjour,

    Je me suis contenté de :

    print $_SERVER['HTTP_HOST'];

    La valeur est soit site.com soit www.site.com, quel que soit ce qu'il y a derrière.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Rewritecond %{HTTP_HOST} ^site\.com$
    RewriteRule .site\.com(.*)$ http://www.site.com$1 [R]
    Cela continue à ne pas marcher...

    C'est assez énervant car la Rewritecond est simplisime et la RewriteRule de même.

  18. #18
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Bonsoir.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule .site\.com(.*)$ http://www.site.com$1 [R]
    - Là vous redirigez tout lien se terminant par : "Tout caractère concaténé avec site.com, suivi d'une chaine quelconque" ... Est-ce vraiment cela que vous voulez faire ?...
    - Par ailleurs il faut une redirection 301 : [R=301]

    Cdlt

    P.S : Dans vos pages à quoi ressemblent vos liens ?... (c'est leur syntaxe qui est déterminante)
    Par ailleurs, comme vous redirigez vers www.site.com, je pense qu'il faut que votre application soit à la racine de ce sous-domaine (Je ne sais pas comment on fait cela, je ne me suis jamais interessé aux sous-domaines. Comme je vous le disais, je n'en ai pas l'utilité pour l'instant, plus exactement la maîtrise)...

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 671
    Points : 128
    Points
    128
    Par défaut
    Bonjour,

    Encore merci de votre suivi.

    Pour avancer, je pense que Rewritecond est correct, en tous cas cela correspond à la valeur de $_SERVER['HTTP_HOST'] qui d'après mes tests est soit site.com soit www.site.com.

    On veut changer si site.com, donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    %{HTTP_HOST} ^site\.com$
    C'est la RewriteRule qui doit ne pas marcher.

    Chez OVH, ils conseillent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Rewriterule ^(.*) http://www.exemple.com/$1 [QSA,L,R=301]
    Le problème est que j'ai des adresse relatives.
    Avec cette règle, si un script se trouve dans un dossier, l'URL ne sera pas bonne.

    a.php se trouve dans le dossier file.
    Un scrip dans le dossier file qui appelle a.php va donc appeler a.php et non pas file/a.php

    On veut réécrire http://www.exemple.com/file/a.php mais la Rewriterule OVH réécrit http://www.exemple.com/a.php et erreur 404.

    Voilà le prermier problème sur lequel je bute, il y en a d'autres...

  20. #20
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Bonjour

    J'ai jeté un coup d'oeil à la doc OVH relative à la création d'1 sous-domaine :

    http://guide.ovh.com/ManagerServicesHebergement

    - on donne un nom au sous-domaine, et OVH va construire ce qu'il faut.
    - Hélas, il utilise le répertoire www. Or c'est aussi le nom de votre sous domaine (Das ist das Chaos !...)
    - Heureusement, il y a une checkbox "créer le sous-domaine www. (Je suppose que c'est cette option que vous avez utilisée)

    Puis plus bas il y a :
    ATTENTION : cette option est disponible à partir de l'hébergmeent 60GP. Après une délai de 24h, dans votre espace web, vous allez découvrir le répertoire "test" (si le répertoire n'y figure pas, le créer). Y placer par exemple une page "index.htm", puis tapez : test.votredomaine.com.
    Ils ont pris l'exemple d'un sous-domaine "test". Donc de votre côté, vous devez avoir le répertoire "www".

    Avez vous effectué le test précité ?... Dans quelles conditions ?... Quel en a été le résultat ?...
    Et après qu'avez vous fait ?...

    Cdlt.

    PS : Je suppose que si OVH demande de placer une page dans le répertoire nouvellement créé, signifie en fait qu'il faut y déplacer votre application... Non ?...

Discussions similaires

  1. Vos critiques pour: http://www.immeuble-mauresque.com
    Par zintelix3d dans le forum Mon site
    Réponses: 5
    Dernier message: 03/11/2008, 14h45

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