Bonjour, j'essaye d'inclure un fichier CSS dans mon architecture MVC ( Je suis en train d'apprendre le MVC )
Mais le CSS ne se load pas, j'imagine qu'il y a quelque chose à voir avec le .htaccess, mais comment faire en sorte qu'il se load ?

.htaccess :

RewriteEngine On
RewriteRule ^([^/]+)/? index.php?url=$1 [L,QSA]

Views/Index.php :`

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Accueil</title>
    <link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
    <h1>Test</h1>

</body>
</html>

Déja essayé url absolu etc, rien n'y fait, le seul moyen que j'ai trouvé et qui fonctionne et de mettre les 10 000 lignes de codes css dans le fichier Views/Index.php ><

12 réponses


Ta réécriture est trop large, tu devrais vérifier que le fichier que l'utilisateur essaie d'atteindre n'existe pas avant. Regarde du côté des RewriteCond !d et !f

Je ne vois pas, je suis pas assez expérimenté en .htaccess, mais j'ai essayé comme ça :

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([^/]+)/? index.php?url=$1 [L,QSA]
Edit : J'ai remis le .htaccess comme ça :
RewriteEngine On

RewriteRule ^([^/]+)/? index.php?url=$1 [L,QSA]

Et le CSS est load, sans aucune raison, je ne comprend vraiment plus rien. Haha

J'ai rien dit, ça ne fonctionne plus
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Accueil</title>
    <link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
    <h1>Test</h1>

</body>
</html>

Du coup effectivement c'est bien ça et tu peux me dire ce qui se passe quand tu essaie de directement chargé le fichier css ? /css/style.css

On vois le css, alors qu'avant on ne le voyait pas

Le langage CSS, je veux dire, comme lorsqu'on ouvre un fichier css depuis un navigateur

Ok du coup cela devrait marcher si tu met ce chemin (en absolut) dans ton HTML

RewriteEngine On

RewriteRule ^([^/]+)/? index.php?url=$1 [L,QSA]
<link rel="stylesheet" type="text/css" href="http://localhost:8888/CCP/css/style.css">

ne marche pas.

Ne retire pas les RewriteCond

Dans ce cas, j'ai l'erreur

Notice: Undefined index: url in /Applications/MAMP/htdocs/CCP/classes/Route.php on line 15

Qui vient du fichier Route :

<?php 

class Route {

    public static $validRoutes = array();
    public static function set($route,$function) {

        self::$validRoutes[] = $route;
        // print_r(self::$validRoutes);

        if ($_GET['url'] == $route)
        {
            $function->__invoke();
        }
    }
}

?>

Merci de m'aider en tout cas ! x)

Prévoit le cas ou ce paramètre est vide (dans le cas de la home)

Sauf que même si je rentre index.php, ça m'affiche la même erreur, je suis en train de chercher comment vérifier si l'URL est vide avec le htaccess sur Internet, la

NBon c'est dans ton code PHP

if ($_GET['url'] == $route)

Tu ne vérifie pas avant si 'url' existe dans $_GET

Donc tout simplement un :

if (isset($_GET['url']))

avant le

if ($_GET['url'] == $route)

?

Sauf que même si je rentre bien l'url "index.php", ça me met la même erreur

L'adresse

index.php?url=index.php

fonctionne , avec le CSS en plus