web-dev-qa-db-fra.com

Comment puis-je obliger Apache à suivre les liens symboliques?

Dans mon dossier www 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 une liste des fichiers dans mydir à partir du Web, je dois donner à Apache la directive FollowSymLinks, non?

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

Ceci est 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>
97
luca

Il y a deux choses ici:

  1. liens symboliques
  2. liste du répertoire

liens symboliques

En supposant que /var/www est votre racine de document pour votre hôte virtuel par défaut, vous devez rechercher votre fichier de configuration d'hôte virtuel par défaut (probablement /etc/Apache2/sites-enabled/000-default) et l'insérer dans 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 là.

liste de répertoires

Pour qu'Apache répertorie les fichiers d'un répertoire, vous devez également activer l'option Indexes, par exemple. changement

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

en /etc/Apache2/sites-enabled/000-default à:

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

Ou, peut-être 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, l'insertion de Options <something> dans un fichier .htaccess ne fonctionnera pas car l'autre entrée de votre fichier de configuration est la suivante: AllowOverride None.

C'est pourquoi nous devons mettre AllowOverride Indexes ici.

( Documentation AllowOverride )

64
Mikel

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

Options +FollowSymLinks

Il est généralement placé dans la configuration Apache (httpd.conf ou conf.d/ ou sites-enabled/) dans un <Directory>.

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

11
grawity

Avec la configuration originale (récente) 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 àALLle chemin de la cible du lien symbolique (même pour les hôtes virtuels et pas seulement pour les liens simulaires). 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 peut être dangereux) a besoin de execute rights jusqu'au répertoire. Besoin de x droits dans chacun des chemins/path,/path/to et/path/to/mirror. A également besoin de Read permission sur le répertoire cible et, en fonction de l'objectif du répertoire, peut-être que l'utilisateur www-data a également besoin d'autorisations d'écriture.

La clé a été obtenue à partir de https://stackoverflow.com/a/14623574

10
victe

Cela ne fonctionnait pas tant que je n'avais pas installé le module Apache autoindex. Parmi de nombreux articles de blog et de forum, personne n’a indiqué que cela était nécessaire. J'espère que ça aide quelqu'un.

1
originalbryan