2015-04-27 34 views
19

我試圖讓我的服務器上指示將進入example.com/z/到不同的目錄比example.com,其中example.com有Laravel 4.2安裝和example.com/z/其餘全部流量的別名有一個流明安裝它運行一項服務。Apache的別名Laravel和流明

這是我原來的虛擬主機:

<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 

如果我去01下的其他任何東西(例如:/z/abcd)我得到一個404頁面,但它看起來像Laravel 404頁面而不是Lumen 404頁面。

關於如何讓這項工作有任何想法?

+1

您是否更改了將別名置於其他VirtualHost之上的順序?對這項工作不是100%有信心,但我會嘗試。 –

+0

我查過了。不能這樣工作:( –

回答

14

的消息告訴你沒有添加的選項Indexes

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

你的別名可能將不得不

Alias /z /data/user/service/public 

Alias /z/ /data/user/service/public/ 
+0

當我添加這個時,我得到的目錄列表(在我的情況下index.php和test.php)試圖導航到這些文件中的任一個結果在404頁 – Samsquanch

+0

什麼顯示在您的apache log? –

+0

'script'/data/user/service/publicindex.php'not found or unable to stat,referer:http:// example.com/z /' – Samsquanch

1

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

Apache在未找到fi le指定的DirectoryIndex - 默認爲index.phpindex.html並且不能顯示indexes跟着你的配置 你確定這個文件有/data/user/service/public嗎?

確保這一點,並添加和.htaccess到你http://lumen.laravel.com/docs/installation#pretty-urls

是公共目錄

Options +FollowSymLinks 
RewriteEngine On 

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

或添加目錄塊父級(如果有一些SYMB鏈接)

<Directory /data/user> 
     Options -Indexes FollowSymLinks 
     AllowOverride all 
     Order Allow,Deny 
     Allow from all 
    </Directory> 
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>