En mi carpeta apache www ( /var/www
en ubuntu 10.10) tengo:
mydir -> /home/user/mydir
(que creé con ln -s
)
Ahora, si quiero ver una lista de los archivos mydir
desde la web, tengo que dar a Apache la directiva FollowSymLinks
, ¿verdad?
¿Pero dónde lo pongo? En un .htaccess
archivo? ¿Dónde? Lo intenté de muchas maneras pero no lo entiendo ...
Este es mi /etc/apache2/sites-enabled/000-default
archivo:
<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/www
es 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
Indexes
opción, por ejemplo, cambiaren
/etc/apache2/sites-enabled/000-default
a: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.htaccess
archivo no funcionará debido a la otra entrada en su fichero de configuración:AllowOverride None
.Por eso tenemos que poner
AllowOverride Indexes
ahí.( Documentación de AllowOverride )
fuente
sudo chmod ugo+x /root; sudo chmod ugo+rx /root/mydir
para que funcione, y eso probablemente no sea una buena idea. Es mejor mover los archivos a algún lugar debajo/var/www
si 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.conf
oconf.d/
osites-enabled/
) dentro de una<Directory>
.Ver
Options
,AllowOverride
y<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