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 :

Ajouter une redirection vers le HTTPS


Sujet :

Apache

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 200
    Points : 157
    Points
    157
    Par défaut Ajouter une redirection vers le HTTPS
    Bonjour à tous,
    je galère un petit peu pour l'url rewriting...

    Ce code me permet de bien faire une partie de ce que je veux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
    Mon soucis c'est que je voudrais conserver cette réecriture mais je souhaiterai aussi etre redirigé vers le https si ce n'est pas le cas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    RewriteEngine on
    <If "%{HTTP_HOST} != 'flechettes'">
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{SERVER_NAME}$1 [QSA,R,L]
    </If>
     
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
    Le code ci-dessus me redirige bien www.monsite.fr vers https://www.monsite.fr en revanche toutes mes ré-ecritures ne fonctionne pas:
    Exemple www.monsite.fr/compte/ajouter me retourne:
    The requested URL was not found on this server.
    Info la partie <If "%{HTTP_HOST} != 'flechettes'"> me sert a distinguer mon hebergement local de mon hebergement ovh
    Auriez vous une piste SVP ?
    D'avance merci

  2. #2
    Membre habitué Avatar de silfun1
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2015
    Messages : 117
    Points : 187
    Points
    187
    Par défaut
    Hello Tyjez,

    mode "Je chipote" = ON
    A mon avis, tu n'as pas besoin d'utiliser une condition IF. C'est utile pour activer/désactiver des parametres, danas la conf Apache, mais pas pour une Rewrite.
    On peut l'utiliser pour un Redirect, mais pas dans une Condition de Rewrite. En effet, par défaut, le IF est implicite. Ca ne répond pas forcément à ta question mais ça permet d'avoir un bloc plus simple à comprendre, je trouves.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    RewriteCond "%{HTTP_HOST}" "!^flechettes"
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{SERVER_NAME}$1  [QSA,R=301,L]
     
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
    Pour être sûr qu'il y a bien un '/' de séparation, entre le nom DNS et l'URI =
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule "^/?(.*)" https://%{SERVER_NAME}/$1  [QSA,R=301,L]
    "The requested URL was not found on this server. " = Quelle type de code HTTP tu as en retour ? : 404 ? 500 ?

    Si tu fais la redirection manuellement, est-ce que cela fonctionne ?
    Ex:
    http://www.monsite.fr/compte/ajouter
    => https://www.monsite.fr/compte/ajouter
    puis
    => https://www.monsite.fr/index.php?url=compte/ajouter
    => code HTTP 200 ??

    Active les traces log, afin de savoir quels sont les cheminements des regles Rewrite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # Enable rewrite rules logs
    LogLevel alert rewrite:trace6
    => Cela va ajouter les traces dans le fichier de log "error"

    Sil


    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
    - Ne vous privez pas pour voter pour ma réponse si elle vous plaît bien
    - Ne pas hésiter à cliquer sur "Résolu" quand votre problème posé a trouvé une solution. Et un petit merci fait toujours plaisir

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 200
    Points : 157
    Points
    157
    Par défaut
    Salut silfun et merci pour ta réponse.
    j'essayerai ton code plus tard mais en attendant, j'ai réussi de cette manière.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    RewriteEngine on
    #RewriteCond %{HTTPS} off
    #RewriteRule ^(.*)$ https://www.monsite.fr/$1 [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(compte/password/)([a-zA-Z0-9]+)$ index.php?url=$1&token=$2 [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [L]
    je décoche les deux lignes commentées pour mon site hebergé chez ovh.
    Concernant ta question sur le type de code en retour je ne sais plus ce qu'il y avait.
    J'attends avant de mettre en résolu la discussion et je reviens vers toi dès que j'ai un peu plus de temps pour tester cela.
    Concernant le mod_rewrite je suis vraiment plus que novice et je trouve la doc super mal faite.
    Merci encore et à plus tard

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Oui mais c'était bien la condition proposée par silfun1 pour exclure le serveur d'évaluation. L'expérience montre qu'on a intérêt à avoir le minimum de différence entre les fichiers locaux et distants ce qui évite des désagréments et du travail. Perso je n'ai que les identifiants de connexion à la base de données qui diffèrent entre la version locale et la version distante.

    Pour faire la distinction pour la ré écriture dans le .htacces, j'utilise ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #Exclue le serveur d'évaluation de la réécriture d'url
    RewriteCond %{DOCUMENT_ROOT} !^G:/wamp64abci/www/
    RewriteCond %{HTTPS} !=on
    RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
    G:/wamp64abci/www/ étant l'adresse de mon dossier d'évaluation local, ce qui m'évite d'avoir à spécifier le nom du site.

    Pour le reste à la suite de ces premières lignes j'utilise aussi le code suivant pour exclure les fichiers ET les dossiers

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #Ne pas réécrire les url qui correspondent à des fichiers ou a des dossiers
    RewriteCond %{REQUEST_FILENAME} -f [OR] 
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule .* - [L]

Discussions similaires

  1. Problème avec mod_rewrite
    Par Sebeee dans le forum Apache
    Réponses: 11
    Dernier message: 15/11/2013, 16h29
  2. Problème avec mod_rewrite
    Par Joebarboat dans le forum Apache
    Réponses: 2
    Dernier message: 24/01/2012, 20h11
  3. Réponses: 14
    Dernier message: 23/05/2010, 11h49
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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