20

我正在尝试在我的服务器上创建一个别名,它将所有进入example.com/z/与其他目录不同的目录的流量引导到其他目录example.com,其中example.com安装了 Laravel 4.2 并example.com/z/安装了运行服务的 Lumen。

这是我原来的虚拟主机:

<VirtualHost *:80>
 ServerName example.com
 DocumentRoot /data/user/public_html/public
 <Directory /data/user/public_html/public>
  Options +FollowSymlinks
  AllowOverride All
 </Directory>
</VirtualHost>

这是/z/添加了别名的虚拟主机:

 <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>

当导航到exmaple.com/z/我得到一个 403 页面并在日志中出现此错误:

 Directory index forbidden by Options directive: /data/user/service/public

如果我转到/z/(例如:)下的任何其他内容,/z/abcd我会得到一个 404 页面,但它看起来像 Laravel 404 页面而不是 Lumen 404 页面。

关于如何让这个工作的任何想法?

4

3 回答 3

15

该消息告诉您没有添加该选项Indexes

<Directory /data/user/service/public>
   Options +FollowSymlinks +Indexes
   AllowOverride All
</Directory>

您的别名可能必须是

Alias /z /data/user/service/public

或者

Alias /z/ /data/user/service/public/
于 2015-04-29T17:05:28.853 回答
1

选项指令禁止的目录索引:/data/user/service/public

DirectoryIndexApache 未找到默认指定的文件,index.php index.html并且无法显示indexes您的配置 您确定其中存在此​​文件之一/data/user/service/public吗?

确保这一点并将其添加.htaccess到您的公共目录中

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

来自http://lumen.laravel.com/docs/installation#pretty-urls

或将目录块添加到父级(如果有符号链接)

  <Directory /data/user>
        Options -Indexes FollowSymLinks
        AllowOverride all
        Order Allow,Deny
        Allow from all
    </Directory>
于 2015-05-05T11:06:54.020 回答
1

未经测试,但添加Require all granted应该会删除一些共享限制。

要考虑的另一件事是确保您的文件夹实际上归 Apache 的所有者所有(www-data、apache,甚至您的用户名或其他内容,具体取决于您的安装)。如果 Apache 无法读取该文件夹,则会触发错误。

我还将目录切换为引用别名而不是文件路径。

 <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>
于 2015-05-05T18:40:00.373 回答