2010-08-09 37 views
0

有一些奇怪的事情發生。我在網站的子文件夾上使用Zend Framework。我有一個模塊化結構到我的網站,所以鏈接包含模塊名稱(www.xx.com/ modulename)。我爲根目錄創建了一個.htaccess文件,以便將所有請求路由到public dir。.htaccess一個特定的文件夾不被重寫

當我嘗試訪問主頁(www.xx.com)或任何模塊時,它都完全按照它應該的方式進行。 www.xx.com/authentication,www.xx.com/samplewww.xx.com/deathmetalreallyrox都是應該的。但是,當我嘗試連接到www.xx.com/admin,它崩潰並燒傷!但它確實有效,但是www.xx.com/public/admin/

難道是我的主機提供商在httpd.conf中設置了某種規則來阻止我訪問我的託管中的admin部分? 這是我的.htaccess:

SetEnv APPLICATION_ENV development 

RewriteRule ^(browse|config).* - [L] 
ErrorDocument 500 /error-docs/500.shtml 
SetEnv CACHE_OFFSET 2678400 
SetEnv APP_DOMAIN http://www.xx.com/public 
SetEnv APP_PREF /public 

<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"> 
Header set Expires "Fri, 25 Sep 2037 19:30:32 GMT" 
Header unset ETag 
FileETag None 
</FilesMatch> 

RewriteEngine On 
RewriteRule ^(adm|statistics) - [L] 
RewriteRule ^admin/(.*) public/admin/$1 
RewriteRule ^(.*)$ public/$1 [L] 

幫助?

編輯: 瀏覽器錯誤消息:

Not Found 

The requested URL /admin/ was not found on this server. 
+0

你是什麼意思「但當我試圖連接到www.xx.com/admin,它崩潰和燒傷」?你有500錯誤嗎?重定向循環? – 2010-08-09 06:56:21

+0

哦,對不起,忘了那部分,編輯過。 – 2010-08-09 06:58:55

+1

「RewriteRule^admin /(.*) public/admin/$ 1'的用途是什麼意思? – 2010-08-10 04:28:05

回答

0

原來,服務器以某種方式配置錯誤。

由於我沒有對服務器的完全控制,我不知道,有在httpd.conf一個規則,即拒絕訪問命名管理管理員任何文件夾,以便當我試圖通過該名稱獲取文件夾的內容時,Apache首先檢查了是否存在該名稱的文件夾,並在默認情況下拒絕了該文件夾。

所以,簡潔的答案,服務器配置錯誤,不允許訪問特定的文件夾。

0

您重定向任何東西開始admin/public/admin/第一,然後一切public/whatever。所以當你要求/admin/,它試圖給你/public/public/admin/,這是不存在的,所以你得到了404。

嘗試刪除行RewriteRule ^admin/(.*) public/admin/$1。它已經被下一行處理了,你不想做兩次。

+0

是的,但雖然這是事實,但事實並非如此。由自己回答。 – 2010-08-19 07:22:40

相關問題