Je veux juste placer un simple site Web PHP dans un répertoire personnalisé de ma machine (par exemple,/home/znorg/foobar) et y accéder via Apache2 sous Ubuntu via quelque chose comme http: // localhost/foobar /
Désolé si cette question est répétée ou trop triviale, mais je ne trouve pas de réponse simple sur la façon de le faire n'importe où.
Une autre approche consiste à: mapper des URL vers des emplacements de système de fichiers via la configuration d'Apache. Pour cela, vous devez utiliser la directive Alias
. La syntaxe est la suivante:
Alias [URL-path] chemin du fichier | chemin du répertoire
Veuillez noter que mod_alias
est requis, mais il est fourni avec Apache2 par défaut. Vous pouvez vérifier s'il est installé via:
Sudo Apache2ctl -M | grep alias
Les alias peuvent être utilisés pour les répertoires et les fichiers. En outre, il peut être utilisé aux deux niveaux:
/etc/Apache2/Apache2.conf
ou dans /etc/Apache2/conf-avaliable/myAlias.conf
) - l'alias sera disponible pour chaque hôte virtuel actif;/etc/Apache2/sites-avaliable/someVH.conf
; entre les balises <VirtualHost >
) - l'alias sera disponible uniquement pour le VirtualHost actuel.Notez que vous devrez peut-être spécifier des sections supplémentaires
<Directory>
qui couvrent la destination des alias. Les alias se produisent avant que les sections<Directory>
ne soient cochées, ainsi seule la destination des alias est affectée.En particulier, si vous créez un alias dans un répertoire situé en dehors de votre
DocumentRoot
, vous devrez peut-être explicitement autoriser l'accès au répertoire cible.
Voici une liste de quelques avantages et inconvénients des deux approches: Alias et SymLinks. Aussi cochez cette case comment.
Supposons que vous souhaitiez créer un alias au niveau de VirtualHost et que votre fichier de configuration VH s'appelle /etc/Apache2/sites-available/000-default.conf
. Dans ce cas, le fichier de configuration devrait ressembler à ceci:
<VirtualHost *:80>
# other VirtualHost directives
Alias /foobar /home/znorg/foobar
<Directory /home/znorg/foobar>
Require all granted
</Directory>
</VirtualHost>
N'oubliez pas de redémarrer (ou de recharger) le serveur:
Sudo systemctl restart Apache2.service
Supposons que vous souhaitiez créer un alias au niveau serveur et que vous ne souhaitiez pas toucher à Apache2.conf
. Dans ce cas, vous devez créer et activer un fichier de configuration supplémentaire. Dans notre exemple, il s'agit de foobarAlias.conf
, qui doit être placé dans le répertoire /etc/Apache2/conf-available/
.
Vous pouvez créer ce fichier via (utilisez ctrl + o pour enregistrer et ctrl + x pour quitter):
Sudo nano /etc/Apache2/conf-available/foobarAlias.conf
Et son contenu devrait ressembler à ceci:
Alias /foobar /home/znorg/foobar
<Directory /home/znorg/foobar>
Require all granted
</Directory>
N'oubliez pas d'activer la nouvelle configuration et de redémarrer (ou recharger) le serveur:
Sudo a2enconf foobarAlias && Sudo systemctl restart Apache2.service
D'après le commentaire de @ George ci-dessus, voici ce qui a fonctionné pour moi:
1) Créez un lien symbolique dans /var/www/html
vers le répertoire souhaité:
Sudo ln -s /home/znorg/foobar /var/www/html/foobar
2) Copier le fichier de configuration du modèle:
Sudo cp /etc/Apache2/sites-available/000-default.conf /etc/Apache2/sites-available/foobar.conf
3) Puis dans foobar.conf, recherchez une ligne comme celle-ci:
DocumentRoot /var/www/html
Et remplacez /var/www/html
par /home/znorg/foobar
4) Activer la nouvelle configuration:
Sudo a2ensite foobar
5) Recharger le serveur:
service Apache2 reload
J'espère que cela est utile pour quelqu'un d'autre.