116 votes

Comment faire en sorte qu'Apache suive les liens symboliques ?

Dans mon dossier apache www ( /var/www sur ubuntu 10.10) j'ai :

mydir -> /home/user/mydir

(que j'ai créé avec ln -s )

Maintenant, si je veux voir une liste des fichiers dans mydir depuis le web, je dois donner à apache la directive FollowSymLinks n'est-ce pas ?

Mais où est-ce que je le mets ? Dans un .htaccess fichier ? Où ? J'ai essayé de nombreuses façons mais je ne comprends pas...

C'est mon /etc/apache2/sites-enabled/000-default fichier :

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks Indexes
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

    Alias /downloads/ "/root/mydir/"
    <Directory "/root/mydir">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>

</VirtualHost>

76voto

Mikel Points 8576

Il y a deux choses ici :

  1. liens symétriques
  2. liste de répertoire

liens symétriques

En supposant que /var/www est votre DocumentRoot pour votre hôte virtuel par défaut, vous devriez trouver le fichier de configuration de votre hôte virtuel par défaut (probablement /etc/apache2/sites-enabled/000-default ) et le placer à l'intérieur de ce bloc d'hôte virtuel, par exemple

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

Si vous n'avez rien changé, cette option devrait déjà être présente.

liste de répertoire

Pour qu'Apache liste les fichiers d'un répertoire, vous devez activer la fonction Indexes également, par exemple, changer

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

sur /etc/apache2/sites-enabled/000-default à :

    <Directory />
        Options FollowSymLinks Indexes
        AllowOverride None
    </Directory>

Ou, peut-être qu'un moyen plus sûr est de le changer en :

    <Directory />
        Options FollowSymLinks
        AllowOverride Indexes
    </Directory>

et mettez ceci dans /home/user/mydir/.htaccess .

    Option Indexes

pourquoi .htaccess ne fonctionne pas

Par défaut, le fait de mettre Options <something> dans un .htaccess ne fonctionnera pas à cause de l'autre entrée dans votre fichier de configuration : AllowOverride None .

C'est pourquoi nous devons mettre AllowOverride Indexes là.

( Documentation sur AllowOverride )

13voto

James Mertz Points 390

L'option doit être utilisée comme suit :

Options +FollowSymLinks

Habituellement, il est placé dans la configuration d'Apache ( httpd.conf o conf.d/ o sites-enabled/ ) à l'intérieur d'un <Directory> .

Voir Options , AllowOverride y <Directory> dans la documentation d'Apache.

12voto

victe Points 231

Avec la configuration originale (fraîche) sur Ubuntu 14.04 avec apache 2.4.7, il n'est pas nécessaire de modifier quoi que ce soit dans *.conf pour suivre les liens symboliques créés sous /var/www/html.

Mais il est nécessaire que l'utilisateur www-data ait accès à TOUTES le chemin de la cible du lien symbolique (même pour les hôtes virtuels et pas seulement pour les liens symboliques). Par exemple,

cd /var/www/html
ln -s /path/to/mirror/cran-mirror cran

Dans cet exemple, l'utilisateur www-data (ou tous les utilisateurs si vous le souhaitez, mais cela peut être dangereux) a besoin de exécuter jusqu'à l'annuaire. Il faut x droits dans chacun des répertoires /path, /path/to, et /path/to/mirror. Il faut également Lire sur le répertoire cible, et, selon le but du répertoire, peut-être que l'utilisateur www-data a besoin de droits d'écriture aussi.

L'indice a été obtenu à partir de https://stackoverflow.com/a/14623574

2voto

originalbryan Points 121

Je n'ai pu le faire fonctionner qu'en installant le module apache autoindex. Parmi les nombreux articles de blog et de forum, personne n'a mentionné que cela était nécessaire. J'espère que cela aidera quelqu'un.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X