Bonjour à tous,

J'utilise Slim Framework, et il est dit dans la doc de placer ses fichiers dans un dossier pubic/ et de faire pointer via apache son site dans ce dossier.
Mon problème est que je suis sur un mutualisé et je ne peux pas dire à apache d'aller chercher mon site dans ce dossier.
Donc comment faire pour que les utilisateurs qui tappent : http://www.monsite.fr/ voient le site comme s'ils avaient tappé http://www.monsite.fr/public/ sans que public ne soit visible ?

Merci d'avance
Bonne journée

15 réponses


Réécriture d'url à la volée ;)

Il faut normalement que l'extension mod_rewrite soit activée( normalement tous les hébergeurs l'activent)

Puis il suffit de créer un fichier .htaccess à la racine puis d'y ajouter:

# On vérifie que le module est chargé
<IfModule mod_rewrite.c>
# On met en route le moteur de réécriture
    RewriteEngine on

# Et on pointe vers le dossier public
    RewriteRule ^ public/    [L]
</IfModule>

J'ai une erreur 500 quand je charge mon site et dans les logs j'ai :

AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

J'ai essayé avec :

# On vérifie que le module est chargé
<IfModule mod_rewrite.c>
# On met en route le moteur de réécriture
    RewriteEngine on

# Et on pointe vers le dossier public
    RewriteRule ^ public/index.php    [L]
</IfModule>

Je n'ai pas d'erreur 500 mais Slim ne route plus rien

Essaie ça:

A la racine du site:

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

Dans le dossier public:

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

(tiré de CakePHP)

Slim ne route toujours pas

Des idées ?

Bonjour,

Peux tu essayer ceci ?

Les XXXXX sont un dossier si ce n'est pas directement dans www.

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

Cordialement

Pour info, j'ai un site en Slim avec :
Pas de .htaccess à la racine
Juste un .htaccess dans public/ (comme si dessus)

Et tu arrives à avoir ton site en http://www.monsite.fr/ sans le dossier public et surtout sans avoir accès au fichiers de conf d'apache ?
Si oui je voudrais bien que tu me dises comment tu fais

Bonjour, peut tu me dire quel hebergeur utilise-tu ?

C'est un hebergeur privé chez un prestataire qui refuse de toucher aux fichiers apache. Oui ce client est chiant.
Quand j'arrive sur leur FTP je suis directement à la racine du site. C'est à dire que / renvoi directement sur http://www.monsite.fr/

Alors je viens de regarder :

J'ai dans mon dossier racine un .htaccess contenant :

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

Et c'est tout

Tu a essayer de mettre directement les fichiers du site a la racine de ton ftp soit "/"

Oui mais dans tous les cas je dois aller dans /public/ pour visualiser le site

Bonjour @BaBeuloula, as tu essayer la solution que j'ai mise ? Ca ne marche pas ? peut etre que l'URL Rewriting n'est pas activé. Crée un fichier .php avec phpinfo(); dedans pour voir si c'est activé

J'ai tous testé des bouts de code et rien.
L'URL Rewriting est bien activé car pour le moment je fonctionne avec le dossier /public/