luc*_*uca 110 apache-http-server webserver
在我的 apache www 文件夹中(/var/www在 ubuntu 10.10 上)我有:
mydir -> /home/user/mydir
Run Code Online (Sandbox Code Playgroud)
(我创建的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>
Run Code Online (Sandbox Code Playgroud)
Mik*_*kel 76
这里有两件事:
符号链接
假设/var/www您的 DocumentRoot 是您的默认虚拟主机,您应该找到您的默认虚拟主机配置文件(可能/etc/apache2/sites-enabled/000-default)并将其放入该虚拟主机块中,例如
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
Run Code Online (Sandbox Code Playgroud)
如果您没有更改任何内容,则该选项应该已经存在。
目录列表
要让 Apache 列出目录中的文件,您还需要启用该Indexes选项,例如更改
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
Run Code Online (Sandbox Code Playgroud)
在/etc/apache2/sites-enabled/000-default到:
<Directory />
Options FollowSymLinks Indexes
AllowOverride None
</Directory>
Run Code Online (Sandbox Code Playgroud)
或者,也许更安全的方法是将其更改为:
<Directory />
Options FollowSymLinks
AllowOverride Indexes
</Directory>
Run Code Online (Sandbox Code Playgroud)
并将其放入/home/user/mydir/.htaccess.
Option Indexes
Run Code Online (Sandbox Code Playgroud)
为什么 .htaccess 不起作用
默认情况下,将Options <something>在一个.htaccess文件不会因为你的配置文件中的其他项目的工作:AllowOverride None。
这就是为什么我们必须把它放在AllowOverride Indexes那里。
use*_*686 13
该选项必须像这样使用:
Options +FollowSymLinks
Run Code Online (Sandbox Code Playgroud)
通常它放在 Apache 配置(httpd.conf或conf.d/或sites-enabled/)中的<Directory>.
见Options,AllowOverride和<Directory>Apache的文档。
小智 12
使用带有 apache 2.4.7 的 Ubuntu 14.04 上的原始(新鲜)配置,无需更改 *.conf 中的任何内容以遵循在 /var/www/html 下创建的符号链接。
但是用户 www-data 必须有权访问符号链接目标的所有路径(即使对于虚拟主机,不仅是对于 simlinks)。例如,
cd /var/www/html
ln -s /path/to/mirror/cran-mirror cran
Run Code Online (Sandbox Code Playgroud)
在此示例中,用户 www-data(或所有用户,如果需要,但可能很危险)需要一直到目录的执行权限。在 /path、/path/to 和 /path/to/mirror 中的每一个都需要 x 权限。还需要对目标目录的读取权限,并且根据目录的目标,用户 www-data 可能也需要写入权限。
| 归档时间: |
|
| 查看次数: |
402256 次 |
| 最近记录: |