Saturday, 31 March 2018

webserver - How do I get Apache to follow symlinks?


In my apache www folder (/var/www on ubuntu 10.10) I have:


mydir -> /home/user/mydir

(that I created with ln -s)


Now, if I want to see a listing of the files in mydir from the web, I have to give apache the directive FollowSymLinks, right?


But where do I put it? In a .htaccess file? Where? I tried many ways but I don't understand it...


This is my /etc/apache2/sites-enabled/000-default file:



ServerAdmin webmaster@localhost

DocumentRoot /var/www

Options FollowSymLinks Indexes
AllowOverride None


Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all


ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all


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/"

Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128


Alias /downloads/ "/root/mydir/"

Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all




Answer



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.



ServerAdmin webmaster@localhost

DocumentRoot /var/www

Options FollowSymLinks
AllowOverride None


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


    
Options FollowSymLinks
AllowOverride None


in /etc/apache2/sites-enabled/000-default to:


    
Options FollowSymLinks Indexes
AllowOverride None


Or, perhaps a more secure way is to change it to:


    
Options FollowSymLinks
AllowOverride Indexes


and put this in /home/user/mydir/.htaccess.


    Option Indexes

why .htaccess doesn't work


By default, putting Options 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)


No comments:

Post a Comment

Where does Skype save my contact's avatars in Linux?

I'm using Skype on Linux. Where can I find images cached by skype of my contact's avatars? Answer I wanted to get those Skype avat...