I'm trying to make an alias on my server which directs all traffic that comes into example.com/z/
to a different directory than the rest of example.com
, where example.com
has a Laravel 4.2 install and example.com/z/
has a Lumen install which runs a service.
This is my original vhost:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /data/user/public_html/public
<Directory /data/user/public_html/public>
Options +FollowSymlinks
AllowOverride All
</Directory>
</VirtualHost>
And this is the vhost with the /z/
alias added in:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /data/user/public_html/public
Alias /z/ /data/user/service/public
<Directory /data/user/service/public>
Options +FollowSymlinks
AllowOverride All
</Directory>
<Directory /data/user/public_html/public>
Options +FollowSymlinks
AllowOverride All
</Directory>
</VirtualHost>
When a navigate to exmaple.com/z/
I get a 403 page and in the logs this error:
Directory index forbidden by Options directive: /data/user/service/public
And if I go to anything else under /z/
(example: /z/abcd
) I get a 404 page, but it looks like the Laravel 404 page instead of the Lumen 404 page.
Any ideas on how I can get this working?
The message is telling you didn't added the option Indexes
<Directory /data/user/service/public>
Options +FollowSymlinks +Indexes
AllowOverride All
</Directory>
Your alias probably will have to be
Alias /z /data/user/service/public
or
Alias /z/ /data/user/service/public/
Directory index forbidden by Options directive: /data/user/service/public
Apache has not found file specified by DirectoryIndex
- default to index.php
index.html
and cannot show indexes
follow you're configuration
Are you sure there is one of this files present in /data/user/service/public
?
Be sure of this and add and .htaccess
into you're public directory
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
from http://lumen.laravel.com/docs/installation#pretty-urls
or add a directory block to parent level (if there is some symb link)
<Directory /data/user>
Options -Indexes FollowSymLinks
AllowOverride all
Order Allow,Deny
Allow from all
</Directory>
Untested, but adding Require all granted
should remove some of the sharing restrictions.
The other thing to consider is ensuring your folder is actually owned by Apache's owner (www-data, apache, or even your username or something else depending on your installation). If the folder can't be read by Apache, it will trigger an error.
I also switched the Directory to refer to the Alias rather than the file path.
<VirtualHost *:80>
ServerName example.com
DocumentRoot /data/user/public_html/public
Alias /z /data/user/service/public
<Directory /z>
Options +FollowSymlinks +Indexes
AllowOverride All
Require all granted
</Directory>
<Directory /data/user/public_html/public>
Options +FollowSymlinks
AllowOverride All
</Directory>
</VirtualHost>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With