2011-02-10 21:52:57 +0000 2011-02-10 21:52:57 +0000
101
101

Comment faire pour qu'Apache suive les liens symboliques ?

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

mydir -> /home/user/mydir

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

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

Mais où la mettre ? Dans un fichier .htaccess ? Où ? J'ai essayé de nombreuses façons mais je ne comprends pas…

Voici mon fichier /etc/apache2/sites-enabled/000-default :

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

Réponses (4)

67
67
67
2011-02-10 21:56:40 +0000

Il y a deux choses ici :

  1. les liens symboliques
  2. la liste des répertoires

les liens symboliques

En supposant que /var/www soit votre DocumentRoot pour votre hôte virtuel par défaut, vous devriez trouver votre fichier de configuration d'hôte virtuel par défaut (probablement /etc/apache2/sites-enabled/000-default) et le mettre dans ce bloc d'hôte virtuel, e. g.

<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 là.

liste des répertoires

Pour qu'Apache liste les fichiers dans un répertoire, vous devez aussi activer l'option Indexes, e. g. changez

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

dans /etc/apache2/sites-enabled/000-default en :

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

Ou, peut-être qu'une façon plus sûre est de le changer en :

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

et de mettre ceci dans /home/user/mydir/.htaccess.

Option Indexes

pourquoi . htaccess ne fonctionne pas

Par défaut, mettre Options <something> dans un fichier .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à.

AllowOverride documentation )

12
12
12
2011-02-10 22:00:05 +0000

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

Options +FollowSymLinks

Habituellement, elle est mise en configuration Apache (httpd.conf ou conf.d/ ou sites-enabled/) dans un <Directory>.

Voir Options , AllowOverride et <Directory> dans la documentation Apache.

10
10
10
2014-10-02 19:14:39 +0000

Avec la configuration originale (fraîche) sur Ubuntu 14.04 avec apache 2.4.7, il n'est pas nécessaire de changer 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 à TOUT le chemin de la cible des liens symboliques (même pour les virtualhosts, 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 droits d’“exécution” jusqu'au répertoire. Il a besoin de x droits dans chacun des répertoires /path, /path/to, et /path/to/mirror. A également besoin de droits de lecture sur le répertoire cible et, selon l'objectif du répertoire, l'utilisateur www-data a peut-être aussi besoin de droits d'écriture.

Clue a été obtenu auprès de https://stackoverflow.com/a/14623574

1
1
1
2014-09-10 15:31:58 +0000

Je n'ai pas pu faire fonctionner ce système avant d'avoir installé le module apache autoindex. Sur les nombreux articles de blog et de forum, personne n'a mentionné que c'était nécessaire. J'espère que cela aidera quelqu'un.