快速通道
修改网站在/etc/apache2/sites-available中对应的配置文件, 将包含软链接的路径加到配置文件中, 并在Options中加入FollowSymLinks选项将其打开
<Directory /var/www/html>
Options +Indexes +FollowSymLinks +MultiViews -SymLinksIfOwnerMatch
AllowOverride all
Order allow,deny
allow from all
</Directory>
问题描述
之前我的nextcloud的东西全都是放在跟分区的, 现在基地多了一个40T
的硬盘阵列, 想把nextcloud移到硬盘中, 想想有两种方式, 一种是将nextcloud里面的东西复制到这个40
T的盘里, 将这个40T
的盘挂在/var/www/html/nextcloud/去, 另一种方法是将nextcloud这个文件夹复制到盘里(随意位置), 然后将这个文件夹软链接到/var/www/html/中;我比较喜欢第二种, 结果就出事了, 网站不能访问了
,开始还以为是权限问题, 后来权限都给www-data了, 还是不行, 查了好久才查到解决方法.
问题原因
我放在/var/www/html里面的是nextcloud的软链接, 而我的apache网站配置文件/etc/apache2/sites-available/000-default.conf(如果没有给域名单独的配置文件默认就是这个)里面并没有允许apache读取/var/www/html里面的软链接, 就像这样
<Directory /var/www/html>
Options +Indexes +MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>
或者
<Directory /var/www/html>
Options Indexes MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>
(加号有没有无所谓, 但是要有加号或者减号所有选项都必须有或者减号)
或者/etc/apache2/sites-available/000-default.conf配置文件里面直接没有<Directory /var/www/html>的配置
解决方法
在网站的相应配置文件(默认是/etc/apache2/sites-available/000-default.conf)中更改<Directory /var/www/html>(有软链接的文件夹的配置, 没有就加)的Option, 在后面加入FollowSymLinks, (可以考虑指定关掉选项, -SymLinksIfOwnerMatch, 这个不知道有没有影响) , 加了之后就可以访问了.