The Computer Oracle

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:

  1. symlinks
  2. 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.

(AllowOverride documentation)




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.