2012-07-18 65 views
7

我試圖清理我的apache虛擬主機,因爲我已經有了一些'Alias',並將它們全部放入mod_rewrite中,這可能令人討厭。然而,當我能到具體的網址(例如http://example.dev/robots.txthttp://example.dev/自身,虛擬主機不會回落到上市URL(FallbackResource /index.php)。Apache2上的FallbackResource(2.2.22(Ubuntu))

的虛擬主機是一個Zend Framework項目的容器,且無.htaccess文件被設置

訪問日誌顯示.... "GET/HTTP/1.1" 302 0,但谷歌瀏覽器顯示「沒有收到數據」和「錯誤324(淨值:: ERR_EMPTY_RESPONSE):服務器關閉不發送任何數據的連接。」

註釋掉FallbackResource一行,並重新啓用基於<Location />的mod_rewrite作爲ex儘管如此。

編輯:虛擬主機中沒有任何東西可以阻止它工作。一些Alias行(FallbackResource應該使用)和一些FilesMatch來停止訪問具有特定擴展名的文件。日誌中出現的唯一東西是404當它試圖去URL而不是index.php(列出的資源)。

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName example.com 
    ServerAlias www.example.com 

    DocumentRoot /var/website/current/html/ 

    SetEnv APPLICATION_ENV productionbackend 

    # must be most specific first 
    Alias /i/static /var/website/static/i 
    # more /i/* Alias 
    Alias /i  /var/website/current/resources/common-furniture/ 

    # protecting files in the directory. 
    <FilesMatch ".*\.xml"> 
     Order allow,deny 
     Deny from all 
    </FilesMatch> 

    <Directory "/var/website/current/html/"> 
     Options FollowSymLinks All 
     AllowOverride All 
    </Directory> 

    ErrorLog logs/error.log 
    CustomLog logs/access.log common 
</VirtualHost> 
+0

Apache錯誤日誌中的任何內容? – nneonneo 2012-08-25 03:52:30

+0

您的虛擬主機中是否有可能阻止FallbackResource工作的指令?請張貼您的虛擬主機配置的較大部分。 – 2012-08-25 06:02:41

+0

你有沒有解決這個問題?我有同樣的問題。 – Marlun 2013-02-12 17:49:40

回答

3

我有一個解決方案。正如我在對原始問題的評論中所說的,我也遇到了同樣的問題。我的虛擬主機是超簡單:

<VirtualHost *:8029> 
    DocumentRoot "C:\path\to\wwwroot" 
    ServerName localhost 
     <Directory /> 
       AllowOverride All 
     </Directory> 
</VirtualHost> 

和我的htaccess只包含:

FallbackResource index.html 

我已經加入DirectoryIndex到我的.htaccess文件。它現在顯示爲:

FallbackResource /index.html 
DirectoryIndex index.html 

這樣就解決了這個問題。

爲什麼這樣嗎?

只有當/ url被第二次調用並且它被瀏覽器緩存時,纔會出現空的響應。出於某種原因,看起來FallbackResource在這種情況下失敗了,所以我想通過確保index.html通過指定DirectoryIndex來提供服務,就不需要回退。您可以將此稱爲解決方法。

+2

這個答案在很多方面都不好:首先你要在''中設置'AllowOverride All',這意味着你不僅允許用戶定義的配置無處不在,你還指示httpd檢查它是否無處不在。這具有巨大的性能和安全性影響。然後,儘管可以完全訪問配置,但是您正在使用將一部分配置放到'.htaccess'中:我想重申一下,這隻對* * *和* *應用的*用戶非常有用*沒有)訪問服務器或其配置。 – 2013-09-27 22:14:35

+1

你是@IgorGalić:)我應該注意到,這是一個開發解決方案,只有我的'。htaccess'在VCS下很方便,而我的系統'httpd-vhosts.conf'則不是。我將把我的配置放到實際部署的'httpd-vhosts.conf'中。感謝您的評論。 – 2013-10-02 14:05:03