Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

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:

<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>
share|improve this question
    
I also tried with an Alias in the config file.. still doesn't work.. –  luca Feb 10 '11 at 22:14

3 Answers 3

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

share|improve this answer
    
look at my config file above... it doesn't work yet... –  luca Feb 10 '11 at 22:12
    
can it be a problem of permissions? I'm root user, I know it's not a good thing to use a system as root, anyway.. I'm root and the directory I symlink to is in the root home /root/mydir.. –  luca Feb 10 '11 at 22:13
    
Yes. What error message do you see? You will need to do sudo chmod ugo+x /root; sudo chmod ugo+rx /root/mydir to make it work, and that's probably not a good idea. Better to move the files somewhere under /var/www if you can. –  Mikel Feb 10 '11 at 23:17
    
Whenever you get an error and are asking for help, you should provide the exact error message to us. And there will be clues in /var/log/apache2/error.log. –  Mikel Feb 10 '11 at 23:19
3  
Make sure you are not pointing to your home directory when you have it encrypted, i.e. a symbolic link in /var/www/home/user/directory. It will produce a huge headache. –  user97686 Sep 13 '11 at 14:50

The option must be used like this:

Options +FollowSymLinks

Usually it's put in Apache configuration (httpd.conf or conf.d/ or sites-enabled/), either global, inside a <VirtualHost> or inside a <Directory>, whichever is more apropriate.

See Options, AllowOverride and <Directory> in Apache documentation.

share|improve this answer
    
In the case of FollowSymLinks specifically it MUST be inside a Directory structure when within a .conf file. From the Apache current manual "The FollowSymLinks and SymLinksIfOwnerMatch Options work only in <Directory> sections or .htaccess files." –  ClearCrescendo Jun 14 at 19:07

I get the same problem with you, check /var/log/message or journalctl, you will find it's selinux's problem.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.