Bonjour a tous,

je suis actuellement en train de développer une application web assez massive pour une entreprise.
Il s'agit de mon site web professionnel et donc je me suis mis a chercher de bonnes idées de programmation.
C'est comme cela que je suis tomber sur ce site qui propose des vidéos de qualité ^^.

Seulement voilà : je suis en train de suivre la série de vidéos intitulée "Développer un site de A à Z". J'en suis à la 2ième vidéo,
celle qui parles de la structure du site et notamment des fichier ".htaccess".
J'ai actuellement réussis a recréer le même environnent de développement que dans la vidéo mais j'ai un problème pour pointer correctement vers mes fichier CSS. dans la vidéo, il pointe vers un css sur le web, hors je veux pointer vers un fichier dans mon répertoire Css qui se trouve dans webroot mais ça ne fonctionne pas.

voici ma ligne d'inclusion : "<link rel="stylesheet" type="text/css" href="./css/Global.css" />"
J'avais déjà crée un site qui est actuellement en production et avant je n'utilisais pas les fichiers htaccess. Du coup mon fichier index était à la racine de mon site et tout fonctionnait bien (seulement j'avais une structure et du code pas terrible donc j'ai décidé de changer).

Dans le site que j'essaie de refaire, j'ai créer une constante CSS_DIR qui donne ceci quand je l'utilise:
"<link rel="stylesheet" type="text/css" href="C:\xampp\htdocs\projects\Sogesa\Sogesa3\sogesa3.0\webroot\css\Global.css" />"
Ma constante pointe vers le fichier par un chemin absolu et non plus relatif mais le résultat est exactement le même.

Est-ce que quelqu'un a une idée ? Est-ce que quelqu'un pourrait peut-être me réexpliquer le fonctionnement du fichier htaccess tel qu'il est utilisé dans la vidéo ?

Merci d'avance

Benjamin

4 réponses


Benjamin Lemin
Auteur
Réponse acceptée

Bonjour à tous.
Tout d'abord, un grand merci a ceux qui on pris le temps de me répondre.
Ensuite, j'ai trouvé la solution a mon problème : j'utilise la balise <base href="..." /> de l'html.
Je m'explique : j'ai une classe qui me permet de construire une page. Cette classe possède plusieurs variables qui permettent d'ajouter des div à la page, des balises, etc...
C'est avec cette classe que je précise dans ceci au début de chaque appelle de index :

fichier index.php :

<?php
// Initialisation
define('WBR_DIR', dirname( __FILE__ ));
define('ROOT', dirname(WBR_DIR));
define('DS', DIRECTORY_SEPARATOR);
define('CFG_DIR', WBR_DIR.DS.'config');
require_once CFG_DIR.DS.'global.php';
require_once CFG_DIR.DS.'init.php';
...

fichier init.php :

...
// Chargement des fichiers généraux
require_once LIB_DIR.DS.'PageBuilder.class.php';
...
// Création d'une page avec les parties qui sont reprisent 
// dans toutes les pages du site
$pb = PageBuilder::getInstance();
$pb->setTitle('Sogesa - ');
$pb->setBase(BASE_RSC);
$pb->setShortcutIcon('./img/Logo.jpg');
$pb->addMeta('meta1', null, "text/html;charset=utf8_unicode_ci", "Content-Type");
$pb->addMeta('meta2', null, "fr-be", "Content-Language");
$pb->addMeta('meta3', "robot", "noindex,nofollow");
$pb->addMeta('meta4', "email", "benjaminlemin@hotmail.com");
$pb->addMeta('meta5', "email", "simon_aurore@hotmail.com");
$pb->addMeta('meta6', "author", "SOGESA - Benjamin Lemin");
$pb->addMeta('meta7', "author", "SOGESA - Aurore Simon");
/**
  *
  * C'EST ICI QUE JE CHARGE MES CSS DE BASE, QUI SE RETROUVE DANS TOUTES LES PAGES
  *
  */
$pb->addCss('global', './css/Global.css');
$pb->addCss('menu-horizontal', './css/MenuHorizontal.css');
$pb->addJavascript('tool', './js/JsTools.js');
$pb->addJavascript('main-file', './js/Global.js');
$pb->addJavascript('annee-culture', './js/AnneeCultureView.js');
...

Comme vous pouvez les voir, j'utilise le même chemin pour chaque fichier ressources.
Et grâce a ceci :

$pb->setBase(BASE_RSC);

qui utilise BASE_RSC (base ressources), une constance que je défini en fonction de mon server, les ressources sont correctement chargée sans que je me casse la tête a savoir comment je dois pointer vers mes fichier.
voici a quoi ressemble la base :

define('BASE_RSC', 'http://localhost/projects/Sogesa/Sogesa3/sogesa3.0/webroot');

Je pointe vers le répertoires webroot dans lequel se trouve mes répertoires de ressources.

Voilà j'espère avoir correctement expliquer ma résolution et j'espère que ça aidera certain ;-).

C'est simple tu écris ça dans un fichier default.php situé dans monsite/view/layout ?
Si tu as pris la même structure/organisation des dossiers tu dois faire ceci:
<link rel="stylesheet" type="text/css" href="../../webroot/css/Global.css" />

Les ../ signifient que tu remontes d'un dossier donc le premier tu sors du dossier layout pour aller dans celui de view, le deuxième tu sors de view pour aller sur mon_site et ensuite tu vas dans webroot/css/Global.css

En fait, je n'utilise pas de fichier default.php.
Ce qui me gène avec ta proposition Xtr3me, c'est que je ne comprends pas comment on fait pour savoir quel chemin mettre dans les href.
Je n'arrive pas a comprendre comment connaitre exactement le lieu où on se trouve pour ensuite mettre un chemin relatif adhoc.
Dans ce que tu me proposes, tu considères que tu te trouve dans "monsite/view/layout" alors que le fichier default.php est charger à partir d'autre part ...

Roh je m'embrouille !!! AU SECOURS !!!

Bon je vais essayer d'écrire ça intelligiblement ^^ :

Est-ce qu'il n'y a pas moyen d'écrire ses lignes de chargement du css de manière plus générique ?

Salut, est-ce que c'est la même structure comme le tutoriel.
si oui, surement tu as déjà crée des constantes.
pour récupérer un fichier du dossier webroot, tu fait un echo de

echo WEBROOT.'/css/style.css';

voilà, si tu poursuis une autre structure merci de nous la montrer.