Question Comment puis-je obtenir Apache pour 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 du web, je dois donner à apache la directive FollowSymLinks, droite?

Mais où est-ce que je le mets? Dans un .htaccess fichier? Où? J'ai essayé de nombreuses manières mais je ne le 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>

84
2018-02-10 21:52


origine


J'ai aussi essayé avec un alias dans le fichier de configuration .. ne fonctionne toujours pas .. - luca


Réponses:


Il y a deux choses ici:

  1. des liens symboliques
  2. liste du répertoire

des liens symboliques

En supposant /var/www est 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 hôte virtuel, par ex.

<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 du répertoire

Pour que Apache liste les fichiers dans un répertoire, vous devez activer le Indexes option aussi, par ex. changement

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

dans /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 pour:

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

et mettre cela en /home/user/mydir/.htaccess.

    Option Indexes

pourquoi .htaccess ne fonctionne pas

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


57
2018-02-10 21:56



regarde mon fichier de configuration ci-dessus ... ça ne marche pas encore ... - luca
peut-il s'agir d'un problème de permissions? Je suis un utilisateur root, je sais que ce n'est pas une bonne chose d'utiliser un système en tant que root, de toute façon. Je suis root et le répertoire vers lequel je lie les liens est dans le root home / root / mydir. - luca
Oui. Quel message d'erreur voyez-vous? Vous devrez faire sudo chmod ugo+x /root; sudo chmod ugo+rx /root/mydir pour que cela fonctionne, et ce n'est probablement pas une bonne idée. Mieux vaut déplacer les fichiers quelque part sous /var/www si tu peux. - Mikel
Chaque fois que vous obtenez une erreur et que vous demandez de l'aide, vous devez nous fournir le message d'erreur exact. Et il y aura des indices dans /var/log/apache2/error.log. - Mikel
Assurez-vous de ne pas pointer vers votre répertoire personnel lorsque vous l’avez chiffré, c’est-à-dire un lien symbolique dans /var/www → /home/user/directory. Cela produira un énorme mal de tête.


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

Options +FollowSymLinks

Habituellement, il est mis en configuration Apache (httpd.conf ou conf.d/ ou sites-enabled/) à l'intérieur d'un <Directory>.

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


10
2018-02-10 22:00



Dans le cas de FollowSymLinks en particulier, il DOIT être dans une structure de répertoire dans un fichier .conf. A partir du manuel actuel d'Apache "Les options FollowSymLinks et SymLinksIfOwnerMatch ne fonctionnent que dans les sections <Directory> ou les fichiers .htaccess". - ClearCrescendo
Attention: le mélange des options avec un + ou - avec ceux sans est pas une syntaxe valide et est susceptible de provoquer des résultats inattendus. - kurdtpage


Avec la configuration d'origine (nouvelle) 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 du lien symbolique (même pour les hôtes virtuels, 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 voulez, mais peut être dangereux) a besoin exécuter droits jusqu'au répertoire. Besoin de droits x dans chacun de / path, / path / to et / path / to / mirror. A également besoin Lis l'autorisation sur le répertoire cible et, selon l'objectif du répertoire, peut-être que l'utilisateur www-data a également besoin d'autorisations en écriture.

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


9
2017-10-02 19:14





Je n'ai pas pu obtenir ce travail avant d'installer le module autoindex apache. Parmi les nombreux articles de blog et messages postés sur le forum, personne n’a mentionné sa nécessité. J'espère que cela aide quelqu'un.


1
2017-09-10 15:31