在共享主机上安装CakePHP时链接断开

时间:2013-02-02 14:49:08

标签: .htaccess cakephp routing shared-hosting addon-domain

我在子目录(cakeDomain)中的共享主机上设置了CakePHP。在根目录(mainDomain)中使用htaccess,我已经指向了另一个域(cakeDomain),如下所示:

# /.htaccess
# cakeDomain redirect rules
RedirectMatch 301 ^/cakeDomain/$ http://cakeDomain.com/
# handle domain root and skip subfolders
RewriteCond %{HTTP_HOST} cakeDomain.com
RewriteCond %{REQUEST_URI} !^/cakeDomain/
RewriteCond %{REQUEST_URI} \..+$
RewriteRule ^(.*)$ cakeDomain/$1 [L]

# add trailing slash to subfolders (eg abc to: abc/)
RewriteCond %{HTTP_HOST} cakeDomain.com
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} [^/]$
RewriteRule ^(.*)$ $1/ [L,R=301]

# handle files in subfolders
RewriteCond %{HTTP_HOST} cakeDomain.com
RewriteCond %{REQUEST_URI} !^/cakeDomain/
RewriteRule ^(.*)$ cakeDomain/$1/ [L]

RewriteCond %{HTTP_HOST} www.mainDomain.com/cakeDomain/
RewriteRule %{HTTP_HOST} www.cakeDomain.com [L]

访问mainDomain.com/cakeDomain正确地将您重定向到cakeDomain.com

CakePHP的文件存储如下:

/cakeDomain/app/...
/cakeDomain/lib/...
/cakeDomain/...
etc.

访问cakeDomain.com会显示正确的首页,但所有链接前面都有已安装的目录:

cakeDomain.com/cakeDomain/controller/action/param1

而不是:

cakeDomain.com/controller/action/param1

任何想法如何解决这个问题?

请注意,在我的多次搜索中,似乎很多人会立即建议虚拟主机。这不是一个选择;我的托管虚拟主机。我认为这个解决方案需要htaccess和/或路由技巧。提前感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:1)

基本上,您将网站B(Cake)放在网站A(Maindomain)的公共网站目录中。

我真的不鼓励你这样做,因为这样所有'私有'CakePHP目录也在你的公共网页目录中(例如cakeDomain / app / tmp / logs / error.log)。请正确检查这些位置是否妥善保护

你可以访问公共网页的“外部”目录吗?

话虽如此,这可能有所帮助: http://cookingwithcakephp.blogspot.nl/2008/04/installing-cakephp-into-subdirectory.html