web-dev-qa-db-fra.com

Comment mapper un répertoire local sur une URL d'hôte local à l'aide d'Apache?

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ù.

3
Znorg

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-pathchemin 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:

  • Au niveau du serveur (dans /etc/Apache2/Apache2.conf ou dans /etc/Apache2/conf-avaliable/myAlias.conf) - l'alias sera disponible pour chaque hôte virtuel actif;
  • Niveau VHost (dans /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.


Exemple 1: alias au niveau VHost


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


Exemple 2: alias au niveau du serveur


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
2
pa4080

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.

1
Znorg