Bonjour,

Je suis en train de revoir le tuto sur la POO en PHP.

Dans l'exemple de la création d'un blog avec des articles grafikart a créer à la racine 3 dossiers dont un dossier "public" et dans ce dossier "public" il a mis un fichier index.php qui lui appelle tous les autres fichier.

Ma question est :
Lorsque je mets en ligne mon site comment serveur sait dans quel dossier il doit aller chercher le fichier index.php qui appelle toutes les autres pages ?

Parce que dans le cas du procédurale, je mets directement mon fichier index.php à la racine.
Mais là il n'est pas à la racine.

Alors comment le serveur dans quel dossier il doit aller chercher le fichier index.php ?

10 réponses


Carouge10
Réponse acceptée

Bonsoir,
Avec un fichier .htaccess qui définira des règles de "routing"

Comme @Carouge10 le dis si le serveur que tu utilises est sous Apache faudra que tu définisse un .htaccess ou si c'est sou NGIX faudra configurer celui-ci

sous nginx c'est dans /etc/nginx/sites-available/ et sur apache 2 /etc/apache2/sites-available et sous apache ajoute cette ligne FallbackResource /public et sous nginx index /public/index.php;

Si tu as choisi un hébergement mutualisé, tu dois avoir la possibilité de choisir le dossier 'racine' depuis le manager.
souvent c'est un dossier 'www' déjà créé mais rien ne nous empèche de créer un sous-dossier 'public' puis de le définir comme 'root'

Devdeb22
Auteur

OK daccord, je crois que j'ai compris.

Et dans le cas où j'utilise un fichier .htaccess, celui-ci doit être mis dans à racine de mon site ?

C'est bien ça ?

Oui c'est ça, dans 99% des cas on n'a qu'un seul htaccess sous la racine

à la racine de ton hebergement :

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^$    public/    [L]
    RewriteRule    (.*) public/$1    [L]
</IfModule>

Dans ton dossier public

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^ index.php [L]
</IfModule>
Devdeb22
Auteur

Un grand merci à tout le monde

@zkiller !!! Si 'public' est la racine ,alors 'public' n'est pas vu par d'apache ; ton premier cas n'est pas adapté
Apache ne peut pas remonter au dessus de la racine mais php si, php peut accéder à tous les répertoires via les requires ou autoloader
donc un seul point d'entrée public 'index.php' le reste du php est chargé ailleurs dans du non public

ca ces un code pour du mutualiser ou la racine du site web est le dossier "public_html" par exemple