2011-02-10 21:52:57 +0000 2011-02-10 21:52:57 +0000
101
101

如何让Apache遵循symlinks?

在我的apache www 文件夹(ubuntu 10.10上的/var/www)中,我有:

mydir -> /home/user/mydir

(我用ln -s创建的)

现在,如果我想从网页上看到mydir中的文件列表,我必须给apache指令FollowSymLinks,对吗?

但我把它放在哪里?在.htaccess文件中?放在哪里?我试了很多方法,但我不明白…..

这是我的/etc/apache2/sites-enabled/000-default文件:

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

答案 (4)

67
67
67
2011-02-10 21:56:40 +0000

这里有两件事:

1.symlinks 2.目录列表

symlinks*

假设默认虚拟主机的DocumentRoot是你的DocumentRoot,你应该找到你的默认虚拟主机配置文件(可能是/var/www),然后把它放在那个虚拟主机块里,比如。 g.

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

如果你没有修改任何东西,这个选项应该已经存在。 例如:把/etc/apache2/sites-enabled/000-default中的

<Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

改成:

<Directory />
        Options FollowSymLinks Indexes
        AllowOverride None
    </Directory>

或者,也许更安全的方法是把它改成:

<Directory />
        Options FollowSymLinks
        AllowOverride Indexes
    </Directory>

,然后把这个选项放到Indexes中。 htaccess不工作**

默认情况下,把/etc/apache2/sites-enabled/000-default放在/home/user/mydir/.htaccess文件中是行不通的,因为你的配置文件中的另一个条目:Options <something>

12
12
12
2011-02-10 22:00:05 +0000

这个选项必须这样使用:

Options +FollowSymLinks

通常情况下,在Apache配置(httpd.confconf.d/sites-enabled/)里边放一个<Directory>

参见Apache文档中的OptionsAllowOverride<Directory>

10
10
10
2014-10-02 19:14:39 +0000

在Ubuntu 14.04和apache 2.4.7的原始(新的)配置下,在*.conf中不需要改变任何东西来跟随在/var/www/html下创建的symlink。例如,

cd /var/www/html
ln -s /path/to/mirror/cran-mirror cran

在这个例子中,www-data用户(如果你想的话,也可以是所有用户,但可能会很危险)需要执行权限,一直到目录。需要在/path、/path/to和/path/to/mirror中的每一个都需要x权限。还需要目标目录上的权限,根据目录的目标,也许用户www-data也需要写权限。

线索来自https://stackoverflow.com/a/14623574

1
1
1
2014-09-10 15:31:58 +0000

直到安装了autoindex apache模块,我才得以顺利完成。在众多的博文和论坛帖子中,没有人提到它是必要的。希望这能帮助到大家。