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 , combiner deux règles


Sujet :

Apache

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 74
    Points : 67
    Points
    67
    Par défaut htaccess , combiner deux règles
    Bonjour à tous


    J'essaie de s'inciter avec l'architecture MVC en utilisant le langage PHP, ce qui mène à ajouter un fichier htaccess dans la racine du projet, je veux bien combiner deux règles, une qui permet de charger les fichiers Css dans la page et l'autre permet de naviguer entre les URL (mvc/URL1)


    voici le code htaccess

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    RewriteEngine On
    RewriteBase /MVC
     
    RewriteCond %{THE_REQUEST} /public/([^\s?]*) [NC]
    RewriteRule ^ %1 [L,NE,R=302]
     
    RewriteRule ^(.*)$ public/index.php?$1 [L,QSA] # naviguer entre l'URL
    RewriteRule ^(.*)$ public/$1 [L,NC] # permet de charger le css
    et l'architecture mvc

    public
    css
    js
    assets
    index.php
    src
    views
    index.php
    default
    layouts.php
    pages
    url.php
    .htaccess
    pour comprendre htaccess

    Merci

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    quelle est la différence entre les url des fichiers css et les urls pour le controleur ?

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 74
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par mathieu Voir le message
    quelle est la différence entre les url des fichiers css et les urls pour le controleur ?
    ,Je n'ai pas bien saisi la question
    voici le fichier index (dans le dossier public, responsable du routage)

    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
    23
    24
     
    <?php
     
    require '../vendor/autoload.php';
     
    define('VIEW_PATH', dirname(__DIR__) . "/views");
    define("CSS_PATH", dirname(__DIR__) . "/public/css/");
     
     
    //debug
    showHideErrors();
     
    //dd($_SERVER['QUERY_STRING']);
     
     
    $router = new Name_Space\Router(VIEW_PATH);
    $router
     
        //->get('/URL/', 'CHEMAIN_DU_FICHIER', 'NOM_DE_LAROUTE')
        ->get('/MVC/', 'index', 'Home')
        ->get('/MVC/page', '/page', 'page')
        ->get('/MVC/candidat/[i:id]', '/candidats/index', 'candidat')
        ->get('/MVC/notfound', '/404', 'error')
        ->run();
    le fichier default.php (dans views/layouts )
    le ficheir css est chargé si j'applique cette régle
    RewriteRule ^(.*)$ public/$1 [L,NC] # permet de charger le css
    mais je ne peux pas naviguer à un autre URL composer 127.0.0.1/MVC/candidat
    avec l'autre règle ça marche, mais le Css ne se charge pas


    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
     
    <!DOCTYPE html>
    <html lang="en" class="h-100">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="stylesheet" href="css/style.css">   
        <title><?= $title ?? 'Candidat' ?></title>
    </head>
    <body>
     
     
    <?= $content ?>
     
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"
            integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.bundle.min.js"></script>
     
    </body>
    </html>
    Merci

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    si l'url est du genre 127.0.0.1/MVC/css/style.css, essayez cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    RewriteEngine On
    RewriteBase /MVC
     
    RewriteCond %{THE_REQUEST} /public/([^\s?]*) [NC]
    RewriteRule ^ %1 [L,NE,R=302]
     
    RewriteRule ^css/(.*)$ public/css/$1 [L,NC] # permet de charger le css
     
    RewriteRule ^(.*)$ public/index.php?$1 [L,QSA] # naviguer entre l'URL

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 74
    Points : 67
    Points
    67
    Par défaut
    ,oui ça marche très bien, merci beaucoup "Mathieu"

    donc je suis le même principe avec le fichier js, image et, assets qui se retrouvent dans le fichier public
    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
     
     
     
    RewriteEngine On
    RewriteBase /MVC
     
    RewriteCond %{THE_REQUEST} /public/([^\s?]*) [NC]
    RewriteRule ^ %1 [L,NE,R=302]
     
    #RewriteRule ^$/(.*)$ public/$1/$1 [L,NC] # permet de charger les fichiers , est ce que la syntaxe est  juste ? testé ,mais j doute :)
     
    RewriteRule ^css/(.*)$ public/css/$1 [L,NC] # permet de charger le css
    RewriteRule ^js/(.*)$ public/js/$1 [L,NC] # permet de charger le js
    RewriteRule ^img/(.*)$ public/img/$1 [L,NC] # permet de charger le img
    RewriteRule ^assets/(.*)$ public/assets/$1 [L,NC] # permet de charger le assets
     
     
    RewriteRule ^(.*)$ public/index.php?$1 [L,QSA] # naviguer entre l'URL
    et lorsque j'écris cette URL le chemin suivant 127.0.0.1/MVC/public/css , je tombe sur la liste des fichiers CSS, est ce qu'en mesure de sécurité , est acceptable, puis-je interdire ce comportement, en faisant par exemple une redirection pour chaque URL contient MVC/public
    edit : Ahh , ou bien en ajoutant un fichier index(qui fait la redirection vers la racine ) dans chaque dossier...

    Toute remarque ou suggestion est la bienvenue
    Merci encore

  6. #6
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    pour ne pas afficher les contenu des répertoires, ajoutez une ligne Options -Indexes dans le fichier .htaccess, cela s'appliquera au répertoire racine et tous les sous-répertoires.

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 74
    Points : 67
    Points
    67
    Par défaut
    Parfait
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Combiner deux règles max-width avec des unités différentes
    Par SylvainPV dans le forum Mise en page CSS
    Réponses: 16
    Dernier message: 25/11/2013, 19h47
  2. Combiner deux images
    Par bruno bdf dans le forum 2D
    Réponses: 3
    Dernier message: 04/07/2008, 13h56
  3. Combiner deux champs en un seul
    Par nicolas2603 dans le forum IHM
    Réponses: 2
    Dernier message: 12/12/2007, 12h08
  4. Combiner deux matrices
    Par bernard6 dans le forum MATLAB
    Réponses: 4
    Dernier message: 13/04/2007, 14h32
  5. [C#] Combiner deux DLL ?
    Par choas dans le forum Windows Forms
    Réponses: 5
    Dernier message: 11/05/2006, 22h51

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