我以前從來沒有遇到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錯誤。
託管在一個共享的託管帳戶,所以這限制了我可以做的設置。我從來沒有見過這種情況發生過,而且我認爲這是從主機端事情出錯,但如果有人有一些有用的建議,那麼我可以把它們放到託管公司。
我可以想象這將是與籠的主目錄,這是核心的httpd的設置做。conf,因爲我很確定〜用戶名格式是符號鏈接 – 2010-03-30 08:09:15