![如何让 Apache 跟随符号链接?](https://linux22.com/image/1264985/%E5%A6%82%E4%BD%95%E8%AE%A9%20Apache%20%E8%B7%9F%E9%9A%8F%E7%AC%A6%E5%8F%B7%E9%93%BE%E6%8E%A5%EF%BC%9F.png)
在我的 apache www 文件夹中(/var/www
在 ubuntu 10.10 上)我有:
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>
答案1
这里有两件事:
- 符号链接
- 目录列表
符号链接
假设/var/www
您的默认虚拟主机的 DocumentRoot,您应该找到您的默认虚拟主机配置文件(可能是/etc/apache2/sites-enabled/000-default
)并将其放在该虚拟主机块中,例如
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
如果您没有更改任何内容,该选项应该已经存在。
目录列表
要让 Apache 列出目录中的文件,您Indexes
还需要启用该选项,例如更改
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
进入/etc/apache2/sites-enabled/000-default
:
<Directory />
Options FollowSymLinks Indexes
AllowOverride None
</Directory>
或者,也许更安全的方法是将其更改为:
<Directory />
Options FollowSymLinks
AllowOverride Indexes
</Directory>
并将其放入/home/user/mydir/.htaccess
。
Option Indexes
为什么 .htaccess 不起作用
默认情况下,由于配置文件中的另一个条目,放入Options <something>
文件.htaccess
将不起作用:AllowOverride None
。
这就是为什么我们必须把它放在AllowOverride Indexes
那里。
答案2
使用带有 apache 2.4.7 的 Ubuntu 14.04 上的原始(最新)配置,不需要更改 *.conf 中的任何内容来跟踪在 /var/www/html 下创建的符号链接。
但用户 www-data 必须有访问权限全部符号链接目标的路径(不仅对于 simlink,甚至对于虚拟主机也是如此)。例如,
cd /var/www/html
ln -s /path/to/mirror/cran-mirror cran
在此示例中,用户 www-data(或者如果您愿意,也可以是所有用户,但可能很危险)需要执行权限一直到目录。需要 /path、/path/to 和 /path/to/mirror 中的每个权限。还需要读目标目录的权限,并且根据目录的目标,用户 www-data 可能也需要写权限。
答案3
该选项必须像这样使用:
Options +FollowSymLinks
通常它被放在 Apache 配置(httpd.conf
或conf.d/
或sites-enabled/
)里面<Directory>
。
看Options
,AllowOverride
和<Directory>
在 Apache 文档中。
答案4
直到安装了 autoindex apache 模块,我才让它工作。在众多博客文章和论坛帖子中,没有人提到这是必要的。希望这对某些人有帮助。