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 ?
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'
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 ?
à 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>
@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