Bonjour, j'utilise l'arboressence mvc avec slim mais j'ai un problème que je n'arrive pas à résoudre tout seul.

J'ai un dossier app, un autre core et un public, j'ai mis un htaccess à la racine qui redirige tout vers public/$1 avec un htaccess dans public biensûr et ça marche très bien.

Mon souci c'est que quand j'intègre slim je suis obligé de passer par le dossier public sinon j'ai une erreur 404.

monsite.com/public/ ça je n'en veux pas, ce que je veux c'est monsite.com c'est tout.

Si quelqu'un peut m'aider ça serait sympa, j'ai essayé de mettre RewriteBase / ou RewriteBase /public mais ça marche pas.

Merci d'avance

4 réponses


j'ai une architecture semblable a la tienne sauf sur un point, j'ai pas de dossier public, j'ai mon index a la racine et c'est lui qui redirige tous.

Voila a quoi ressemble mon archi:

  • app ( les controllers et models lié a l'application )
  • core ( slim et tous mon mic-mac a moi )
  • templates ( les pages smarty )
  • vendor ( les lib composer )
  • index.php ( mon fichier de routing )
  • .htaccess

J'utilise ce type d'archi depuis un moment deja et je n'ai eu aucun problème.
Pour ton htacces que tu as dans public c'est celui de Slim? poste le contenu du htaccess pour voir ce que tu y fait

Voilà le htaccess racine :

RewriteEngine On
RewriteRule ^(.*)$ public/$1 [QSA,L]

Et le htaccess dans public

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

Hello Stan Neau,

J'avais une même structure et logique que toi.
N'ayant pas su résoudre ce problème, j'ai du passer par un fichier index.php à la racine qui load le tout.

Si tu as trouvé une solution ou si quelqu'un d'autre sait aider, je suis prenneur :)

hachbé

C'est tout simplement parce que le dossier public représente le dossier www ou public_html de ton hébergeur et/ou serveur. Ton domaine ou ton host doit donc rediriger sur le dossier index.php dans ton répertoire public.