2010-03-30 92 views
2

我以前從來沒有遇到CakePHP的問題,但是對於此服務器有些奇怪,並導致.htaccess文件中的重定向行爲異常。爲什麼我的.htaccess文件重定向到完整的服務器路徑而不是相對路徑?

CakePHP在.htaccess文件中使用mod_rewrite將請求重定向到它自己的webroot文件夾。問題是重定向列出了錯誤的路徑並導致了404錯誤。我的CakePHP的應用程序,它存儲在列表目錄中,有一個.htaccess文件如下:

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteRule ^$ app/webroot/ [R=301,L] 
    RewriteRule (.*) app/webroot/$1 [R=301,L] 
</IfModule> 

(*注意R = 301使外部重定向,所以我們可以看到什麼是我們的最終回事它真的應該忽略這個標誌並在內部做重定向,透明的最終用戶)

據說這是爲了從http://hostname.com/~username/listings/的任何請求重定向到http://hostname.com/~username/listings/app/webroot/ 然而,而不是簡單地增加「app/webroot/」到最後,因爲它是應該是,它添加完整的服務器路徑(/home/username/public_html/listings/app/webroot/),導致最終的網址http://hostname.com/home/username/public_html/listings/app/webroot/,其中我顯然不正確,並觸發404錯誤。

託管在一個共享的託管帳戶,所以這限制了我可以做的設置。我從來沒有見過這種情況發生過,而且我認爲這是從主機端事情出錯,但如果有人有一些有用的建議,那麼我可以把它們放到託管公司。

+0

我可以想象這將是與籠的主目錄,這是核心的httpd的設置做。conf,因爲我很確定〜用戶名格式是符號鏈接 – 2010-03-30 08:09:15

回答

3

你的問題的解決方案可以實現這個page在CakePHP的書的底部找到:

對於許多託管服務(GoDaddy的,的1and1),您的Web服務器實際上是被從用戶目錄服務已經使用mod_rewrite。如果要將CakePHP安裝到用戶目錄(http://example.com/~username/cakephp/)或任何其他已使用mod_rewrite的URL結構中,則需要將RewriteBase語句添加到CakePHP使用的.htaccess文件(/.htaccess,/app/.htaccess,/應用程序/根目錄/ htaccess的)。

我已經從配置文件的public_html文件夾中部署了CakePHP。我不得不改變3上面提到的相同的.htaccess文件。只需在RewriteEngine on之後將RewriteBase /~username/添加到.htaccess文件即可!

0

嘗試從主文件中刪除的.htaccess ...它爲我

+2

這是擺脫這個問題的一種非常具有破壞性的方式。 – Brilliand 2011-10-07 19:12:23

0

這是很簡單的(使用uolhost共享主機):

編輯都.htaccess文件:

/Webroot公司/的.htaccess

/.htaccess

添加以下行: RewriteBase/

這裏是整個/webroot/.htaccess文件:

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^index.php [L] 

相關問題