Partage
  • Partager sur Facebook
  • Partager sur Twitter

htacces redirection https et routeur php

    15 novembre 2017 à 16:33:27

    Bonjour, 

    En fait, avec mon htacces, mes renvoie ce font sans problèmes pour les .be et .fr (sachant que le .fr est un alias)

    Le problème est que il laisse passer toutes les pages .html et .php alors qu'il devrait les renvoyer au routeur php avec la variable $url=mapage.php

    Je ne comprends pas bien ou est mon erreur.

    Cela dit pour info, je réserve la variable $url="sitemap.xml" pour rediriger, via le routeur php, le robot vers une page générée en php.

    ps: code ci dessous

    Merci de votre aide.

    RewriteEngine On


    RewriteCond %{HTTP:X-Forwarded-Proto} !https

    RewriteCond %{HTTP_HOST} ^monsite.fr
    RewriteRule (.*) https://monsite.fr/$1 [R=301,L]

    RewriteCond %{HTTP:X-Forwarded-Proto} !https

    RewriteCond %{HTTP_HOST} ^monsite.be
    RewriteRule (.*) https://monsite.be/$1 [R=301,L]



    RewriteCond %{REQUEST_URI} !\.(php)$
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?url=$1 [NC,L]


    # SECTION BEGIN GIT PROTECTION
    RedirectMatch 404 /\.git
    # SECTION END GIT PROTECTION
    • Partager sur Facebook
    • Partager sur Twitter
    Savoir que l'on est bête est déjà très intélligent.
      15 novembre 2017 à 21:49:36

      À la place de réinventer la roue à chaque fois, il existe des routeur php déjà fait et qui marche très bien.

      Sinon, tu peux utiliser la variable $_SERVER qui te donnera l'url. Tu n'aura ensuite qu'à faire quelques manip et d'injecter le résultat où tu en a besoin.

      • Partager sur Facebook
      • Partager sur Twitter
      Autodidacte, j'essaye d'apprendre le pourquoi du comment :)
        15 novembre 2017 à 23:47:12

        Bonsoir,

        Le problème de viens pas du routeur mais de la configuration htacces.

        je ne comprend pas pourquoi il interprète les fichiers alors qu’il y a le REQUEST_FILENAME !-f et -d

        Le but est que htacces ne laisse passer que le fichier index.php et que pour tous les autres il retourne en variable le fichier demandé. De plus avec la redirection de http -> https si besoin.

        Pour l’heure, la redirection fonctionne (http -> https),

        Le traitement des url tel : « monsite.fr/un-sujet-a-lire » fonctionne très bien,

        mais je peut quand même avoir accès a mes fichier par l’url: « monsite.fr/voirSujet.php?url=un-sujet-a-lire », et ca, je ne veut plus. C’est la que mon problème se trouve.

        Donc vraiment pas une configuration php mais bien le traitement de htacces qui ne fonctionne pas comme il devrait.

        PS pour les routeurs qui existent déjà, je suis au courant mais j’ai préféré créer le mien qui est très léger en ressources. Juste 3 ‘case’ et 3 requires

        un ‘case’ pour le fichier sitemap.xml, un ‘case’ pour le fichier robot.txt et un ‘case’ avec require variable URL qui viens d’une BDD mysql pour convertir les liens type ‘un-sujet-a-lire’ En voirSujet.php?id=123456789.

        Merci quand même de votre réponse.

        • Partager sur Facebook
        • Partager sur Twitter
        Savoir que l'on est bête est déjà très intélligent.
          16 novembre 2017 à 12:03:48

          > Le problème est que il laisse passer toutes les pages .html et .php alors qu'il devrait les renvoyer au routeur php avec la variable $url=mapage.php

          En même temps avec :

          > RewriteCond %{REQUEST_URI} !\.(php)$

          Ton routeur n'interceptera jamais ce qui a ".php" pour extension ...

          PS : on peut abréger :

          RewriteCond %{HTTP:X-Forwarded-Proto} !https
          RewriteCond %{HTTP_HOST} ^monsite.fr
          RewriteRule (.*) https://monsite.fr/$1 [R=301,L]
          
          RewriteCond %{HTTP:X-Forwarded-Proto} !https
          RewriteCond %{HTTP_HOST} ^monsite.be
          RewriteRule (.*) https://monsite.be/$1 [R=301,L]
          

          En :

          RewriteCond %{HTTP:X-Forwarded-Proto} !=https
          RewriteCond %{HTTP_HOST} ^monsite\.(be|fr)$
          RewriteRule .* https://monsite.%1/$0 [R=permanent,L]
          

          Voire :

          RewriteCond %{HTTP:X-Forwarded-Proto} !=https
          RewriteRule .* https://%{HTTP_HOST}/$0 [R=permanent,L]
          

          -
          Edité par julp 16 novembre 2017 à 12:06:42

          • Partager sur Facebook
          • Partager sur Twitter
            17 novembre 2017 à 12:05:05

            Bonjour et merci pour votre réponse.

            En effet la redirection .be et .fr est beaucoup plus propre comme cela.

            Par contre: RewriteCond %{REQUEST_URI} !\.(php)$  n'avait visiblement aucuns effets car je pouvais (avant de l'enlever) et je peux toujours (après l'avoir enlevé) accéder à /mapage.php

            Y a t'il une raison? Dois-je changer l'extension de  fichier.php en fichier.apl par facilité ?

            D'avance merci

            • Partager sur Facebook
            • Partager sur Twitter
            Savoir que l'on est bête est déjà très intélligent.
              17 novembre 2017 à 14:11:20

              > Le problème est que il laisse passer toutes les pages .html et .php alors qu'il devrait les renvoyer au routeur php avec la variable $url=mapage.php

              > Par contre: RewriteCond %{REQUEST_URI} !.(php)$ n'avait visiblement aucuns effets car je pouvais (avant de l'enlever) et je peux toujours (après l'avoir enlevé) accéder à /mapage.php

              C'est moi ou ça se contredit ? A moins que tu ne parles de fichiers qui existent physiquement dans un cas et pas dans l'autre ?

              > je peux toujours [...] accéder à /mapage.php

              S'il existe physiquement, c'est normal à cause de tes RewriteCond (RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME} !-d) qui excluent justement ce qui correspond à des fichiers ou dossiers.

              • Partager sur Facebook
              • Partager sur Twitter

              htacces redirection https et routeur php

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown