2012-09-07 41 views
-1

我已經構建了一個Zend Framework應用程序。通過將其配置爲讀取routes.ini文件,部署後我的應用程序不會轉到任何路由,但只有默認路由正在運行。我在這個應用程序中共有4條路線,並且它們都沒有工作。 Apache顯示未找到錯誤。我的zend框架應用程序沒有讀取htaccess文件,即使在Apache中啓用url重寫後

我看過.htaccess文件它是完美的,在我的本地工作正常。我也檢查了權限。它擁有www-data的讀寫權限。我也檢查了Apache URL重寫模塊。

我再次做到這一點,並試圖:

sudo a2enmod rewrite 

還是同樣的問題。

我的apache錯誤日誌說該文件不存在。
請告訴我我出錯的地方。

+0

能你通過在你的.htaccess中寫入「拒絕所有」來進行測試並訪問http://yourhostname.com/?你應該看到一個403錯誤.. –

+0

它不給我403錯誤 –

+0

好吧然後你的重寫模塊不工作!你可以重新啓用rewite模塊嗎?你是否也在httpd.conf中啓用了該模塊? –

回答

1

研究了幾個小時後,我就注意到,有一個非常apache虛擬主機文件中的小而敏感的錯誤。

我的條目是這樣

<Directory /var/www/your_project> 
Options Indexes FollowSymLinks MultiViews 
AllowOverride None 
Order allow,deny 
allow from all 
</Directory> 

但實際上我的條目應按照mssb一些什麼樣的這個

<Directory /var/www/your_project> 
Options Indexes FollowSymLinks MultiViews 
AllowOverride All 
Order allow,deny 
allow from all 
</Directory 

因爲我不是一個有經驗的站長我沒有注意到一個簡單東西是 AllowOveride選項被設置爲無

我今天提到了Core apace文檔,以便找到我在哪裏錯了 。

的理由不選擇.htaccess文件如下:

當AllowOveride指令被設置爲無,那麼.htaccess文件將被 完全忽略。在這種情況下,服務器甚至不會嘗試 讀取文件系統中的.htaccess文件。

當此指令設置爲全部時,則在.htaccess文件中允許任何具有 .htaccess上下文的指令。

我個人覺得張貼這整個解決方案的問題,以幫助其他人誰可能會在未來

面臨着類似的問題,我再次衷心感謝大家爲應對這一職位

+0

感謝您發佈如何解決您的問題的詳細說明,我希望更多的人會這樣做! – bradym

0

嘗試以下步驟來mod_rewrite的

sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/ 

sudo gedit /etc/apache2/sites-enabled/000-default 

添加以下代碼

<Directory /var/www/your_prject_name> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride all 
    Order allow,deny 
    allow from all 
    # This directive allows us to have apache2's default start page 
    # in /apache2-default/, but still have/go to the right place 
    # Commented out for Ubuntu 
    #RedirectMatch ^/$ /apache2-default/ 
</Directory> 

然後重新啓動服務器

sudo /etc/init.d/apache2 restart 
+0

我已經有了這個設置,但仍然是同樣的問題,它不是拾取.htaccess文件 –