Partage
  • Partager sur Facebook
  • Partager sur Twitter

comment configurer fichier htaccess

configurer fichier htaccess

    19 septembre 2017 à 16:40:17

    Salut,

    je cherche désespérément comment configurer mon fichier htaccess de sorte à ce que mon url pointe vers http://monsite/login.

    Merci pour votre aide!!!!

    • Partager sur Facebook
    • Partager sur Twitter
      19 septembre 2017 à 17:17:06

      Salut,

      As-tu autorisé Apache a lire les .htaccess avec AllowOverride All ?

      le mod_rewrite est il activé ?

      Qu'as tu essayé de faire ?

      Quel résultat obtient tu ?

      Donne nous des info sur ta situation bon-dieu, on est pas devins.

      • Partager sur Facebook
      • Partager sur Twitter
        19 septembre 2017 à 17:23:40

        Merci pour ton aide!! A vrai dire, c'est la première fois que je met le nez dedans et je suis en train de patauger!!! voici mon fichier:

        # Use the front controller as index file. It serves as a fallback solution when
        # every other rewrite/redirect fails (e.g. in an aliased environment without
        # mod_rewrite). Additionally, this reduces the matching process for the
        # start page (path "/") because otherwise Apache will apply the rewriting rules
        # to each configured DirectoryIndex file (e.g. index.php, index.html, index.pl).
        DirectoryIndex app.php
        
        # By default, Apache does not evaluate symbolic links if you did not enable this
        # feature in your server configuration. Uncomment the following line if you
        # install assets as symlinks or if you experience problems related to symlinks
        # when compiling LESS/Sass/CoffeScript assets.
        # Options FollowSymlinks
        
        # Disabling MultiViews prevents unwanted negotiation, e.g. "/app" should not resolve
        # to the front controller "/app.php" but be rewritten to "/app.php/app".
        <IfModule mod_negotiation.c>
            Options -MultiViews
        </IfModule>
        
        <IfModule mod_rewrite.c>
            RewriteEngine On
        
            # Determine the RewriteBase automatically and set it as environment variable.
            # If you are using Apache aliases to do mass virtual hosting or installed the
            # project in a subdirectory, the base path will be prepended to allow proper
            # resolution of the app.php file and to redirect to the correct URI. It will
            # work in environments without path prefix as well, providing a safe, one-size
            # fits all solution. But as you do not need it in this case, you can comment
            # the following 2 lines to eliminate the overhead.
            RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
            RewriteRule ^(.*) - [E=BASE:%1]
        
            # Sets the HTTP_AUTHORIZATION header removed by Apache
            RewriteCond %{HTTP:Authorization} .
            RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
        
            # Redirect to URI without front controller to prevent duplicate content
            # (with and without `/app.php`). Only do this redirect on the initial
            # rewrite by Apache and not on subsequent cycles. Otherwise we would get an
            # endless redirect loop (request -> rewrite to front controller ->
            # redirect -> request -> ...).
            # So in case you get a "too many redirects" error or you always get redirected
            # to the start page because your Apache does not expose the REDIRECT_STATUS
            # environment variable, you have 2 choices:
            # - disable this feature by commenting the following 2 lines or
            # - use Apache >= 2.3.9 and replace all L flags by END flags and remove the
            #   following RewriteCond (best solution)
            RewriteCond %{ENV:REDIRECT_STATUS} ^$
            RewriteRule ^app\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]
        
            # If the requested filename exists, simply serve it.
            # We only want to let Apache serve files and not directories.
            RewriteCond %{REQUEST_FILENAME} -f
            RewriteRule ^ - [L]
        
            # Rewrite all other queries to the front controller.
            RewriteRule ^ %{ENV:BASE}/app.php [L]
        </IfModule>
        
        <IfModule !mod_rewrite.c>
            <IfModule mod_alias.c>
                # When mod_rewrite is not available, we instruct a temporary redirect of
                # the start page to the front controller explicitly so that the website
                # and the generated links can still be used.
                RedirectMatch 302 ^/$ /app.php/
                # RedirectTemp cannot be used instead
            </IfModule>
        </IfModule>
        

        J'heberge mon application chez alwaysdata et j'aimerai que l'url fournie par défaut http://monapplication.net. pointe vers http://monapplication.net/login donc vers ma page ou lesutilisateur se log avant de pouvoir utiliser l'application!

        Merciiiiiiiiii!!!

        • Partager sur Facebook
        • Partager sur Twitter
          19 septembre 2017 à 19:34:58

          Tu veux que tout pointe sur login, ou seulement l'index, quand on est pas loggé ?

          Ça a une importance quand même. Je ne traiterais pas ça en HTACCESS mais en PHP ...

          • Partager sur Facebook
          • Partager sur Twitter
          Kwo:re / topic OC | Aidez les autres, indiquez un sujet résolu ! | Vous êtes bloqué ? Suivez le guide ! | N'aide pas par MP
            19 septembre 2017 à 19:40:16

            Je voudrai que cela pointe sur login!! Peut me donner une piste?? Comment si prendre?? En php ca me va bien aussi!!
            • Partager sur Facebook
            • Partager sur Twitter
              19 septembre 2017 à 19:43:52

              Non, mais réponds à ma question : Tu veux que TOUTES tes pages, TOUT le temps, pointent vers login ou non ?

              • Partager sur Facebook
              • Partager sur Twitter
              Kwo:re / topic OC | Aidez les autres, indiquez un sujet résolu ! | Vous êtes bloqué ? Suivez le guide ! | N'aide pas par MP
                19 septembre 2017 à 19:51:53

                non, en fait ce que je souhaite c'est que au lancement de l'application, l'utilisateur accède a cette page de login. jusqu’à présent sur mon serveur local, j'y accède avec l'url localhost/monprojet/web/app_dev.php/login. J'ai mis mon application sur un serveur(Alwaysdata), j'ai configurer mon répertoire racine comme suit => www/web en imaginant qu'en passant par le fichier app.dev mon application se lancerait automatiquement sur ma page de login puisque le reste de l'application est derriere un parefeu configurer dans mon fichier security.yml. Mais les choses ne sont aussi simple et surtout pas magique...
                • Partager sur Facebook
                • Partager sur Twitter
                  19 septembre 2017 à 19:59:30

                  Donc au lancement de ton application :

                  • L'utilisateur n'est pas loggé,
                  • Il est redirigé vers login,
                  • Il s’identifie, 
                  • Il peut accéder à tout le site.

                  C'est ça ?

                  Si c'est le cas, le chemin logique serait :

                  • Un nouveau visiteur arrive sur n’importe quelle page,
                  • On vérifie s'il n'est pas déjà identifié,
                  • S'il l'est déjà, on traite la demande de façon normale (accès libre à l'application),
                  • S'il ne l'est pas, on redirige vers la page de connexion,
                  • On le laisse s'identifier,
                  • On reprend à l'étape 1.

                  Pour gérer ça, les sessions PHP couplées à des redirections par headers sont toutes indiquées, le faire en HTACCESS s'est se compliquer la tâche pour rien ! (je ne sais même pas si c'est faisable ainsi).

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Kwo:re / topic OC | Aidez les autres, indiquez un sujet résolu ! | Vous êtes bloqué ? Suivez le guide ! | N'aide pas par MP
                    19 septembre 2017 à 20:13:12

                    Je souhaite que l'application ne soit accessible qu'après que l'utilisateur se soit identifié. et je tiens absolument a ce que la première page visible par un utilisateur anonyme soit cette page de login. l'application et destiné à être utilisé en entreprise. Pour te donner plus de détail chez alwaydata(l'hebergeur), ils fournissent une url par défaut qui ressemble à ça => http://monapp.alwaysdata.net. Cette url me renvoi vers une erreur du type 404 et les logs m'informent sur un GET "/". Ce qui veut dire que je n'ai aucune route qui correspond a http://monapp.alwaysdata.net/. Je m'interroge donc sur ce fameux slash qui vient s'ajouter à la fin de cette url?? En revanche, lorsque je corrige manuellement l'url en y ajoutant /login à la fin, tout fonctionne parfaitement. Qu'est ce qui peut bien générer cette erreur d'url?? une piste??
                    • Partager sur Facebook
                    • Partager sur Twitter
                      19 septembre 2017 à 20:40:12

                      Ratpi@ a écrit:

                      Je souhaite que l'application ne soit accessible qu'après que l'utilisateur se soit identifié. et je tiens absolument a ce que la première page visible par un utilisateur anonyme soit cette page de login. l'application et destiné à être utilisé en entreprise. Pour te donner plus de détail chez alwaydata(l'hebergeur), ils fournissent une url par défaut qui ressemble à ça => http://monapp.alwaysdata.net. Cette url me renvoi vers une erreur du type 404 et les logs m'informent sur un GET "/". Ce qui veut dire que je n'ai aucune route qui correspond a http://monapp.alwaysdata.net/. Je m'interroge donc sur ce fameux slash qui vient s'ajouter à la fin de cette url?? En revanche, lorsque je corrige manuellement l'url en y ajoutant /login à la fin, tout fonctionne parfaitement. Qu'est ce qui peut bien générer cette erreur d'url?? une piste??


                      Tu as répondu toi même à ta question : "Ce qui veut dire que je n'ai aucune route qui correspond a http://monapp.alwaysdata.net/"

                      Je ne sais pas comment tu gères tes routes, mais il te faut une route "index", ou "/" ou je ne sais quoi qui sera appelée lors de l'arrivée sur l'URL racine.

                      Et sur cette route, tu y configures les conditions de vérifications de login ...

                      Je ne sais pas si tu utilises un Framework mais regardes du côté des middlewares. J'ai moi aussi ce genre de logique, sur un code là aussi pour un projet d'entreprise, codé sous SlimFramework 3.

                      Voici un exemple de mes routes :

                      $app->group('', function() {
                          $this->get('/', Page::class . ':home')->setName('root');
                          $this->get('/index[/]', Page::class . ':home')->setName('root');
                          $this->get('/projets', Page::class . ':projects')->setName('projects.list');
                          $this->get('/projets/ouverts/', Page::class . ':projectsOpened')->setName('projects.opened');
                        //... d'autres routes GET
                      
                      //POST ROUTES
                          $this->post('/projets/note/ajouter', Page::class . ':addnote')->setName('project.addnote');
                          $this->post('/projets/time/ajouter', Page::class . ':addtime')->setName('project.addtime');
                      //... d'autres routes POST
                      
                      })->add(new \App\Middlewares\AuthMiddleware($container));
                      
                      //Routes dans besoin de login
                      $app->get('/login', Controller::class . ':getLogin')->setName('login');
                      $app->post('/login', Controller::class . ':postLogin')->setName('login');
                      $app->get('/logout', Controller::class . ':getLogout')->setName('logout');

                      Et le middleware, appelé sur l'ensemble des routes hors les 3 du bas :

                      class AuthMiddleware {
                      
                          private $container;
                      
                          public function __construct($container){
                              $this->container=$container;
                          }
                      
                      
                          public function __invoke(Request $request, Response $response, $next) {
                              if(_LOGIN_TIMEOUT==0 && isset($_SESSION['logged']))
                              {
                                  $_SESSION['dieTime'] = time()+_LOGIN_TIMEOUT;
                                  return $next($request, $response);
                              } 
                              elseif(isset($_SESSION['logged']) && $_SESSION['dieTime']<=time()) 
                              {
                                  $_SESSION['dieTime'] = time()+_LOGIN_TIMEOUT;
                                  return $next($request, $response);
                              }
                              else
                              {
                                  return $response->withRedirect($this->container->router->pathFor('login'));
                              }
                          }
                      
                      }




                      • Partager sur Facebook
                      • Partager sur Twitter
                      Kwo:re / topic OC | Aidez les autres, indiquez un sujet résolu ! | Vous êtes bloqué ? Suivez le guide ! | N'aide pas par MP
                        19 septembre 2017 à 21:04:54

                        Je te remercie infiniment pour ton aide!! Je suis sous symfony 3. Mes routes liées à à l'authentification utilisateur sont gérer par le fosUserBundle? Penses-tu dans ce cas qu'il faut que je mette le nez dedans en changeant le l'url qui correspond à ma page de /login par un simple "/". Puisque apparement mon fichier app.php renvoi automatiquement vers "/".
                        • Partager sur Facebook
                        • Partager sur Twitter
                          19 septembre 2017 à 21:18:50

                          Désolé mais je ne connais absolument pas Symfony ... :( Je suis resté à des frameworks non usine à gaz pour mes projets.

                          Je te dirais de créer une route comme la mienne, la première, "/" et de faire une redirection vers la page que tu souhaites,et laisses la partie d'identification au Middleware. 

                          Tu auras une application nécessitant un login quoi qu'il arrive, et une redirection plus facilement gérable que via HTACCESS

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Kwo:re / topic OC | Aidez les autres, indiquez un sujet résolu ! | Vous êtes bloqué ? Suivez le guide ! | N'aide pas par MP
                            19 septembre 2017 à 21:41:12

                            merci!! je me penche la dessus!! je donnerai des nouvelles une fois solutionné!!!
                            • Partager sur Facebook
                            • Partager sur Twitter
                              21 septembre 2017 à 10:25:25

                              J'ai solutionné ça en suivant tes conseils! J'ai tout simplement crée un route "/" dont le controller renvoi vers la page "/login" et donc c'est la première page que voit l'utilisateur!! Je n'avais pas forcément saisie que le fichier app.php renvoi automatiquement vers une url correspondante a "/". Voilà! C'était tout simple et pas besoin de mettre le nez dans le .htaccess! Je te remercie infiniment!!
                              • Partager sur Facebook
                              • Partager sur Twitter

                              comment configurer fichier htaccess

                              × 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