2012-04-12 57 views
2

無法在Apache服務器上配置CakePhp。它在我的開發環境中運行良好,現在我正在部署。CakePhp 2.0 .htaccess

的URL看起來像:

"http://www.example.com/mysite/" 

樣本控制器動作將是:

"http://www.example.com/mysite/users/login" 

使用默認htaccess中似乎並沒有工作。

mod_rewrite根據phpInfo加載,它重寫URL,但它將/ mysite /視爲控制器。 這裏是輸出和我的.htaccess文件

Missing Controller 

Error: MysiteController could not be found. 

Error: Create the class MysiteController below in file: >app/Controller/MysiteController.php 

根:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteRule ^$ app/webroot/ [L] 
    RewriteRule (.*) app/webroot/$1 [L] 
</IfModule> 

應用:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteRule ^$ webroot/ [L] 
    RewriteRule (.*) webroot/$1 [L] 
</IfModule> 

根目錄:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ index.php?/$1 [QSA,L] 
</IfModule> 

我應該尋求改變我的.htaccess文件s,還是我的CakePhp配置文件?我試過幾個不同的RewriteBases,只能設法得到不同的錯誤。

編輯:服務器正在運行php-cgi,它顯示我的所有鏈接正在寫入一個cgi-bin。例如:

$this->Html->meta('icon'); 

寫入路徑「/cgi-bin/cgiwrap/w3u_mysite/mysite/favicon.ico」 任何想法在何處或爲什麼這可能是發生?

+0

完全使用域名有什麼問題? (沒有mysite部分?)如果您打算將域用於多個應用程序,則始終可以使用子域。 – mark 2012-04-12 23:10:09

+0

這是我的主機給出的網絡空間,我無法使用整個域名 – seelmobile 2012-04-12 23:24:49

回答

3

正如我在編輯懷疑,這個問題是涉及到運行cgi php的服務器。我不完全確定問題是什麼,但CakePhp谷歌組提供了這個解決方案:

在app/Config/core.php中有一個註釋掉的App.baseUrl定義。取消註釋並替換爲以下內容

Configure::write('App.baseUrl', '/mysite/'); 

在上面,有評論說刪除應該忽略的.htaccess文件。該網站正常使用.htaccess文件作爲標準值,不需要RewriteBase。有一個煩惱是$this->Html->css()$this->Html->js()函數不起作用,但我只在模板中調用它們,所以對它們進行硬編碼並不可怕。

如果有人對這些CGI問題的原因有所瞭解,請分享。如果我不能使用所有的Html幫助程序,它仍然感覺有點像kludge。

0

你會想添加Rewritebase /mysite/(可能帶有'/ mysite'引用或沒有第二個斜槓,你將不得不嘗試)到你的.htaccesses,所以mod重寫將採取該文件夾帳戶。


您是否檢查了webroot/index.php文件的正確路徑? 作爲最後的手段,可能會篩選路線中的「神祕」?


最後一個建議:在前面加上mysite/在你的RewriteRules app

+0

第一個建議的所有組合都不起作用,其中一些沒有任何區別,另一些則產生了內部服務器錯誤。 我認爲index.php配置正確,但它使用的是默認值。用phpInfo的根路徑定製沒有區別。 我試圖改變CakePhp中的路由,並得到了有趣的結果。我相信該域名也在使用重寫,因爲我被重定向到一個CGI錯誤的替代網址。 最終的建議導致了內部服務器錯誤。 – seelmobile 2012-04-13 15:29:49

+0

我的主機明確指出,我的目錄的AllowOverride沒有設置爲全部,而是一個指令。 RewriteBase不能按預期的方式工作嗎? – seelmobile 2012-04-13 21:28:59

+0

我有點不滿意這裏......還有最後一個問題,當你使用RewriteBase的時候,你是否使用它來處理所有的.htaccess文件? – Joep 2012-04-14 08:41:55

0

我對某些服務器有類似的問題。 我的解決方案是命名所有.htaccess文件中的絕對路徑。

喜歡的東西:

根:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteRule ^$ /mysite/app/webroot/ [L] 
    RewriteRule (.*) /mysite/app/webroot/$1 [L] 
</IfModule> 

應用:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteRule ^$ /mysite/app/webroot/ [L] 
    RewriteRule (.*) /mysite/app/webroot/$1 [L] 
</IfModule> 

根目錄:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ /mysite/app/webroot/index.php?/$1 [QSA,L] 
</IfModule>