2013-03-03 39 views
1

我正在CakePHP應用程序上工作。當我將其上傳到我的主機的public_html目錄時,我爲它創建了一個子目錄。沒有子目錄名稱的CakePHP路由

所以現在的結構是這樣的:domain.com/subdircake/。

我已經在public_html根中包含了一個.htaccess文件,並且我已經改變了webroot文件夾中的index.php來指向子目錄。

我不知道是否由於錯誤的.htaccess配置導致CakeApp或mod_rewrite問題內部發生路由問題,但會發生什麼情況。

  1. 我可以訪問域並顯示應用程序的主頁。
  2. 鏈接指向domain.com/subdircake/action而不是domain.com/action。
  3. 當我強迫該網址爲domain.com/action時,它的作品,這讓我強調,因爲我不知道爲什麼。

所以我認爲它必須是一些重寫問題,但我沒有任何線索。

任何任何想法?

+0

另一個網站是否已經在該public_html目錄中託管?你也可以訪問public_html目錄外的目錄嗎?只是通知哪些選項適用於您。 – thaJeztah 2013-03-03 18:51:30

+0

不,這是唯一的網站。我沒有在public_html目錄之外訪問。 – Kornel 2013-03-03 19:24:45

回答

5

之所以要domain.com/action作品是th在你的.htaccess解決方案是有效的 - 它確實將URL重寫到正確的位置。但是,CakePHP的路由系統並不知道您對默認重寫腳本所做的更改,這會導致HTML助手生成仍然指向不需要編輯.htaccess文件的位置的鏈接。

想到的第一個解決方案是更改您的App.base配置;在Config/bootstrap.php,加入這一行:

Configure::write('App.base','/');

,看看有沒有幫助。我建議在更改設置後徹底測試網站,但許多CakePHP功能都使用它,結果可能會出乎意料。

+0

感謝它正在工作.. – Confused 2015-02-10 11:52:27

0

你使用userdir mod嗎?

如果你這樣做,你必須編輯3蛋糕.htaccess(位於你的蛋糕文件夾的根目錄下,在你的應用/文件夾和你的app/webroot /文件夾中,並且添加其中的一行在RewriteEngine On行:

#.htaccess : 
RewriteBase /~username/ 

#app/.htaccess : 
RewriteBase /~username/app 

#app/webroot/.htaccess : 
RewriteBase /~username/app/webroot 

您的用戶名替換用戶名,但不要忘了〜

如果餅夾在一個子目錄,這將是/~username/subdir/...

0

webroot目錄的內容放入您的public_html文件夾中。

然後改變index.php(在根目錄/的public_html,而不是在蛋糕的應用程序目錄)以下行

if (!defined('ROOT')) { 
    define('ROOT', 'subcakedir'); 
} 

/** 
* The actual directory name for the "app". 
* 
*/ 
if (!defined('APP_DIR')) { 
    define('APP_DIR', 'app'); 
} 
0

Thiago Campezzi的回答完美的作品,我Kornel

有完全相同的問題在Config/bootstrap.php,添加此行:

Configure::write('App.base','/'); 

我不能評論或投票,所以我寫在這裏:) Th你好!我搜索了這個答案的小時!

順便說一下,這可以與.htaccess協同工作,因此無需每次將新版本的應用程序上傳到Web服務器時都進行更改。

+0

請不要添加「謝謝」答案。有用的答案,只要你有代表就投票。 – laalto 2013-10-02 08:56:56

相關問題