How to allow acces to a symbolic link in my ~/Sites/ for Apache under Mac OS X Lion 10.7.2
Solution 1:
Here is a blog post I wrote when I was trying to figure out how to do exactly what you are trying to do.
- Enable Web Sharing on the MAC by going to System Prefrences —> Sharing —> Check Enable Web Sharing
-
Edit your username.conf file located in /private/etc/apache2/users and add the “FollowSymLinks” directive:
<Directory "/Users/yourUserName/Sites/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory>
-
Edit the /private/etc/apache2/httpd.conf file and make sure the line under “# Virtual hosts” is not commented out, like so:
Include /private/etc/apache2/extra/httpd-vhosts.conf
-
Edit the /private/etc/apache2/extra/httpd-vhosts.conf file and add:
<VirtualHost *:80> <Directory /Users/yourUserName/Sites/MyWebSite.com> Options +FollowSymlinks +SymLinksIfOwnerMatch AllowOverride All </Directory> DocumentRoot /Users/yourUserName/Sites/MyWebSite ServerName MyWebSite.local </VirtualHost>
-
Edit the /etc/hosts file and add this at the top:
127.0.0.1 MyWebSite.local
-
Make a Symlink to link your Code directory to one in the Sites directory.
ln -s ~/Code/MyWebSite ~/Sites/MyWebSite
Restart apache
Solution 2:
In fact only the first 2 steps from Emjay's answer plus an apache restart are necessary, here is what worked for me:
Enable Web Sharing on the MAC by going to System Prefrences —> Sharing —> Check enabled Web Sharing
-
Edit your
username.conf
file located in/private/etc/apache2/users
and add the FollowSymLinks directive:<Directory "/Users/yourUserName/Sites/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory>
-
check your apache config
sudo apachectl -t
-
restart apache
sudo apachectl restart
Now Apache will serve the symbolic links under your Sites
directory.
Solution 3:
I was getting 403 forbidden
error. What solved my problem is in httpd-vhosts.conf
, I replaced the below config
<Location "/modulename">
Order allow,deny
Allow from all
</Location>
with
<Location "/modulename">
Require all granted
</Location>
Did the same for all the Location tags. It solved the permission issue.