How do I get Apache to follow symlinks?
--
Music by Eric Matyas
https://www.soundimage.org
Track title: Hypnotic Puzzle3
--
Chapters
00:00 Question
01:40 Accepted answer (Score 80)
03:46 Answer 2 (Score 14)
04:59 Answer 3 (Score 14)
05:29 Answer 4 (Score 2)
05:50 Thank you
--
Full question
https://superuser.com/questions/244245/h...
Accepted answer links:
[AllowOverride documentation]: http://httpd.apache.org/docs/2.0/mod/cor...
Answer 2 links:
https://stackoverflow.com/a/14623574
Answer 3 links:
[Options]: http://httpd.apache.org/docs/2.2/mod/cor...
[AllowOverride]: http://httpd.apache.org/docs/2.2/mod/cor...
[
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#apachehttpserver #webserver
#avk47
ACCEPTED ANSWER
Score 82
There are two things here:
- symlinks
- directory listing
symlinks
Assuming /var/www
is your DocumentRoot for your default virtual host, you should find your default virtual host configuration file (probably /etc/apache2/sites-enabled/000-default
) and put it inside that virtual host block, e.g.
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
If you haven't changed anything, that option should already be there.
directory listing
To make Apache list the files in a directory, you need to enable the Indexes
option too, e.g. change
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
in /etc/apache2/sites-enabled/000-default
to:
<Directory />
Options FollowSymLinks Indexes
AllowOverride None
</Directory>
Or, perhaps a more secure way is to change it to:
<Directory />
Options FollowSymLinks
AllowOverride Indexes
</Directory>
and put this in /home/user/mydir/.htaccess
.
Option Indexes
why .htaccess doesn't work
By default, putting Options <something>
in an .htaccess
file won't work because of the other entry in your config file: AllowOverride None
.
That's why we have to put AllowOverride Indexes
there.
ANSWER 2
Score 14
The option must be used like this:
Options +FollowSymLinks
Usually it's put in Apache configuration (httpd.conf
or conf.d/
or sites-enabled/
) inside a <Directory>
.
See Options
, AllowOverride
and <Directory>
in Apache documentation.
ANSWER 3
Score 14
With the original (fresh) configuration on Ubuntu 14.04 with apache 2.4.7, there is no need to change anything in *.conf to follow symlinks created under /var/www/html.
But it is necessary that user www-data has access to ALL the path of symlink target (even for virtualhosts not only for simlinks). For instance,
cd /var/www/html
ln -s /path/to/mirror/cran-mirror cran
In this example user www-data (or all users if you want, but can be dangerous) needs execute rights all the way to the directory. Need x rights in each of /path, /path/to, and /path/to/mirror. Also needs Read permission on the target directory, and, depending of the goal of the directory, maybe user www-data needs write permissions too.
Clue was obtained from https://stackoverflow.com/a/14623574
ANSWER 4
Score 2
I couldn't get this working until installing the autoindex apache module. Out of numerous blog posts and forum posts, no one mentioned it being necessary. Hope this helps someone.