Ceci est une ancienne révision du document !
Déployer l'application dans un sous répértoire
Le but ici est d’héberger une appli Synfony dans un sous répertoire et non pas a la racine du site web.
Imaginons que l'on veuille acceder a notre appli via le répértoire 'sous_repertoire
' comme ceci :
http://mon_site.com/sous_repertoire/xxxx/xxxx/
La partie /xxxx/xxxx
devenant la route a retourner au routeur Symfony
Nouveau HTACCESS
a placer dans le répertoire de l'application.
Ce .htaccess renvois tout ce qui est demandé au niveau de ce répértoire vers le répértoire public
- .htaccess
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*) public/index.php/$1 [L] </IfModule>
Modification du routage
Configuration dans le fichier .env
Dans notre exemple l'adresse de notre app est
http://mon_site.com/sous_repertoire/xxxx/xxxx/
Dans le fichier .env
ou .env.local
ajouter la variable globale
- .env.local
BASE_HOST="/sous_repertoire" BASE_URL="http://mon_site.com/sous_repertoire/public" #pour les Assets
Si
BASE_URL
est vide ou est une adresse mal formée, alors on obtient une erreur
Dans le fichier services.yaml
Pour transformer la variable globale en variable interpretable par le routeur dans le fichier annotations.yaml
- config/services.yaml
parameters: app.base_host: '%env(BASE_HOST)%'
Ajouter un prefix aux urls
- config/routes/annotations.yaml
controllers: resource: ../../src/Controller/ type: annotation prefix: '%app.base_host%' kernel: resource: ../../src/Kernel.php type: annotation prefix: '%app.base_host%'
Modifier l'url de base pour les Assets
- config\packages\framework.yaml
assets: base_urls: ['%env(BASE_URL)%']
J'ai essayé avec le paramètre
base_path
qui me paraissait plus approprié, mais cela n'a pas fonctionné…
Sources & Ressources
Vous pourriez laisser un commentaire si vous étiez connecté.