35666


■環境  
Server version: Apache/2.4.6 (CentOS)  
CentOS Linux release 7.3.1611 (Core)  
での質問です。

/home に2017、2016、2015 ... というディレクトリがあり、それぞれの中にその年度毎のユーザディレクトリが存在しています。

/home/public_html を作成し、その中に  
hogetaro -> /home/2017/hogetaro/public_html  
foohanako -> /home/2016/foohanako/public_html

といったシンボリックリンクを張り、

/etc/httpd/conf.d/userdir.conf に

[code]

    <Directory "/home/public_html">
        AllowOverride All
        Options FollowSymLinks
        Require all granted
    </Directory>
    
[/code]

と記述しユーザ毎のウェブディレクトリが表示出来るようにしようとしました。

しかし、アクセスすると Forbiddenとなり、error.logには

client denied by server configuration

と書かれていました。  
どうすれば解決出来るでしょうか？

ちなみに、

[code]

    <Directory "/home/*/*/public_html">
        AllowOverride All
        Options None
        Require all granted
    </Directory>
    
[/code]

とした時は問題なく表示できました。


CC BY-SA 3.0
2017-06-16T09:30:33.660
35638
2017-06-17T16:01:16.507
2017-06-16T10:13:32.407
3974
23840
question
centos apache
Apache2.4のユーザーディレクトリでシンボリックリンクを読めない


`UserDir public_html` を有効にして <http://(server)/~hogetaro/> でアクセスしているとのこと。

hogetaro ユーザーのホームディレクトリが /home/2017/hogetaro/ ならば、`/~hogetaro/`
というリクエストパスに対し、Apache httpd は `/home/2017/hogetaro/public_html/`
を参照しますので、このディレクトリ(または親ディレクトリ)へのアクセス許可(Require all granted)が必要です。

/home/public_html/ 以下を参照するわけではないので、`<Directory "/home/public_html">`
で許可しても、FollowSymLinks を有効にしても関係ありません。


CC BY-SA 3.0
2017-06-17T16:01:16.507
35666
2017-06-17T16:01:16.507
4603
35638
answer