2012-09-18 35 views
1

我想要exampleapp.com/clientapp/執行/usr/local/apache/htdocs/clientapp中的index.php。在Apache下使用DocumentRoot目錄

這個計算器的問題概括類似於我想要做的事:https://stackoverflow.com/a/8454/173630

我有一些麻煩這個工作。這裏是我的VirtualHost設置的開始:

<VirtualHost exampleapp.com:80> 

DocumentRoot /home/platform/src/serverapp/public 

RewriteEngine On 

Alias /clientapp/ "/usr/local/apache/htdocs/clientapp" 
<Directory "/usr/local/apache/htdocs/clientapp"> 
    FallbackResource index.php 
    <IfModule mod_suphp.c> 
     suPHP_UserGroup nobody nobody 
    </IfModule> 
</Directory> 

RewriteRule ^/clientapp/(.*)$ /clientapp/$1 [PT] 

我使用Apache 2.2.22。我知道這是一個令人困惑的設置 - 我這樣做的原因是爲了避免從clientapp到serverapp的跨域AJAX請求。

使用此配置我沒有收到任何錯誤,它只是通過服務器應用程序。

更新 問題是,我有一個基本驗證設立/usr/local/apache/htdocs/clientapp,密碼沒有被提示訪問exampleapp.com/clientapp/時,它只是默默地失敗。我現在脫掉了BasicAuth,這使它能夠正常工作。

+0

你得到了什麼錯誤? –

+0

@JonLin沒有錯誤,它只是通過serverapp/public – nnyby

+0

爲什麼你在底部有'RewriteRule'? 「別名」應該足夠了。 –

回答

2

在嘗試了幾件事情之後,它看起來像是被延遲的mod_alias,或者盲目地將文件路徑和URI路徑混合在一起或將文件路徑(/usr/local/apache/htdocs/clientapp)誤認爲URI路徑(不知道如何)。無論哪種方式,你可以做兩件事情之一,看起來像。

  1. 添加結尾斜線到您的文件路徑:

    Alias /clientapp "/usr/local/apache/htdocs/clientapp" 
    

兩者似乎做的:

Alias /clientapp/ "/usr/local/apache/htdocs/clientapp/" 
  • 從URI路徑刪除尾隨斜線訣竅,但我會建議做第二個選項,因爲它會匹配exampleapp.com/clientapp(無結尾斜槓)的請求,而mod_dir將正確地將其識別爲目錄並將您重定向到exampleapp.com/clientapp/。而如果你選擇第一個選項,去exampleapp.com/clientapp只會給你一個404(或者根文檔中的東西最終處理它)。

  • 0

    <Directory ...>...</Directory>更改爲<Location /clientapp>...</Location>並將所有內容保留在其中。