How do I get Apache to follow symlinks?
Hire the world's top talent on demand or became one of them at Toptal: https://topt.al/25cXVn
and get $2,000 discount on your first invoice
--------------------------------------------------
Music by Eric Matyas
https://www.soundimage.org
Track title: Puzzle Meditation
--
Chapters
00:00 How Do I Get Apache To Follow Symlinks?
01:09 Accepted Answer Score 82
02:31 Answer 2 Score 14
02:50 Answer 3 Score 2
03:06 Answer 4 Score 14
04:01 Thank you
--
Full question
https://superuser.com/questions/244245/h...
--
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.