私のApacheから〜/ Sites内のsym-linkedディレクトリへのアクセスを許可する必要があります。私はこのようにディレクトリをシンボリックリンクしました
ln -s ~/path/to/the/source/directory/ ~/Sites/source-link-here
GETリクエストを起動するたびに、403応答が返されます
curl http://localhost/~username/source-link-here/
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /~username/source-link-here
on this server.</p>
...
どうすればシンボリックリンクされたディレクトリへのアクセスを許可するようにApacheに指示できますか。また、localhostから起動されたリクエストに対してのみ許可するようにApacheに指示するにはどうすればよいですか。
どんな助けでも大歓迎です。
宜しくお願いします
robertj
これが ブログ投稿 私があなたがしようとしていることを正確に行う方法を理解しようとしていたときに書いたものです。
/ private/etc/Apache2/usersにあるusername.confファイルを編集し、「FollowSymLinks」ディレクティブを追加します。
<Directory "/Users/yourUserName/Sites/"> オプションインデックスMultiViews FollowSymLinks AllowOverride None Order allow、deny Allow from all </ Directory>
/private/etc/Apache2/httpd.confファイルを編集し、「#Virtual hosts」の下の行が次のようにコメント化されていないことを確認します。
/private/etc/Apache2/extra/httpd-vhosts.conf を含めます
/private/etc/Apache2/extra/httpd-vhosts.confファイルを編集して、以下を追加します。
<VirtualHost *:80> <Directory /Users/yourUserName/Sites/MyWebSite.com> Options + FollowSymlinks + SymLinksIfOwnerMatch AllowOverride All </ Directory> DocumentRoot /Users/yourUserName/Sites/MyWebSite ServerName MyWebSite.local </ VirtualHost>
/ etc/hostsファイルを編集し、これを先頭に追加します。
127.0.0.1 MyWebSite.local
Symlinkを作成して、CodeディレクトリをSitesディレクトリのコードディレクトリにリンクします。
ln -s〜/ Code/MyWebSite〜/ Sites/MyWebSite
Apacheを再起動します
実際には、Emjayの回答からの最初の2ステップとApacheの再起動のみが必要です。
System Prefrences—>Sharingに移動して、MACでWeb共有を有効にします—>チェックが有効Web共有
username.conf
にある/private/etc/Apache2/users
ファイルを編集し、FollowSymLinksディレクティブを追加します。
<Directory "/Users/yourUserName/Sites/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
apacheの設定を確認してください
Sudo apachectl -t
apacheを再起動します
Sudo apachectl restart
これで、ApacheはSites
ディレクトリの下のシンボリックリンクを提供します。
403 forbidden
エラー。私の問題を解決したのはhttpd-vhosts.conf
、以下の設定を置き換えました
<Location "/modulename">
Order allow,deny
Allow from all
</Location>
と
<Location "/modulename">
Require all granted
</Location>
すべてのLocationタグについて同じでした。それは許可の問題を解決しました。
以下の場合に発生することがあります。
この問題を解決するには、ext4ファイルシステムに新しいフォルダーを作成し、/var/www
へのシンボリックリンクを作成しました。
適切なコンテナのhttpd.confのOptions FollowSymLinks
ConfでDocumentRoot文字列を見つけます。その値を覚えておいてください。オプション文字列の<Directory "docroot here">...</Directory>
セクションの内容を確認してください。オプションがない場合-文字列Options FollowSymLinks
を追加します(存在するがFollowSymLinksを使用していない場合)-Options Indexes FollowSymLinks
のように使用するには、このパラメーターを追加します。設定を変更した後、Apacheを再起動します。テスト結果、ここに書いてください
Apacheのドキュメントを読む