En mi carpeta apache www ( /var/wwwen ubuntu 10.10) tengo:
mydir -> /home/user/mydir
(que creé con ln -s)
Ahora, si quiero ver una lista de los archivos mydirdesde la web, tengo que dar a Apache la directiva FollowSymLinks, ¿verdad?
¿Pero dónde lo pongo? En un .htaccessarchivo? ¿Dónde? Lo intenté de muchas maneras pero no lo entiendo ...
Este es mi /etc/apache2/sites-enabled/000-defaultarchivo:
<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>

Respuestas:
Aquí hay dos cosas:
enlaces simbólicos
Suponiendo que
/var/wwwes su DocumentRoot para su host virtual predeterminado, debe encontrar su archivo de configuración de host virtual predeterminado (probablemente/etc/apache2/sites-enabled/000-default) y ponerlo dentro de ese bloque de host virtual, por ejemploSi no ha cambiado nada, esa opción ya debería estar allí.
lista de directorios
Para que Apache enumere los archivos en un directorio, también debe habilitar la
Indexesopción, por ejemplo, cambiaren
/etc/apache2/sites-enabled/000-defaulta:O tal vez una forma más segura es cambiarlo a:
y poner esto en
/home/user/mydir/.htaccess.por qué .htaccess no funciona
Por defecto, poner
Options <something>en un.htaccessarchivo no funcionará debido a la otra entrada en su fichero de configuración:AllowOverride None.Por eso tenemos que poner
AllowOverride Indexesahí.( Documentación de AllowOverride )
fuente
sudo chmod ugo+x /root; sudo chmod ugo+rx /root/mydirpara que funcione, y eso probablemente no sea una buena idea. Es mejor mover los archivos a algún lugar debajo/var/wwwsi puedes./var/log/apache2/error.log./var/www→/home/user/directory. Producirá un gran dolor de cabeza.La opción debe usarse así:
Por lo general, se trata de poner en la configuración de Apache (
httpd.confoconf.d/osites-enabled/) dentro de una<Directory>.Ver
Options,AllowOverridey<Directory>en la documentación de Apache.fuente
Con la configuración original (nueva) en Ubuntu 14.04 con apache 2.4.7, no es necesario cambiar nada en * .conf para seguir los enlaces simbólicos creados en / var / www / html.
Pero es necesario que el usuario www-data tenga acceso a TODAS las rutas del destino del enlace simbólico (incluso para los hosts virtuales, no solo para los enlaces sim). Por ejemplo,
En este ejemplo, el usuario www-data (o todos los usuarios si lo desea, pero puede ser peligroso) necesita ejecutar derechos en todo el directorio. Necesita x derechos en cada uno de / ruta, / ruta / a, y / ruta / a / espejo. También necesita permiso de lectura en el directorio de destino y, dependiendo del objetivo del directorio, tal vez el usuario www-data también necesite permisos de escritura.
La pista se obtuvo de https://stackoverflow.com/a/14623574
fuente
No pude hacer que esto funcionara hasta que instalé el módulo autoindex apache. De numerosas publicaciones de blog y publicaciones de foro, nadie mencionó que fuera necesario. Espero que esto ayude a alguien.
fuente