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

.htaccess 在共享主机上安装CakePHP时链接断开,.htaccess,cakephp,routing,shared-hosting,addon-domain,.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 %{HTT

我已经在一个子目录(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和/或路由技巧。提前感谢您提供的任何帮助。

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

我真的不鼓励您这样做,因为这样所有“私有”CakePHP目录也都在您的公共web目录中(例如cakeDomain/app/tmp/logs/error.log)。请正确检查这些位置是否正确固定

你有权访问公共webfoot“外部”的目录吗

尽管如此,这可能会有所帮助:

谢谢您的回答。我以前看过那一页,但不起作用。我可以访问public_html上面的目录。那会有帮助吗?所以CakePHP目前安装在/public_html/cakeDomain/中,至少您不会将所有“私有”代码都放在webroot中。“主”域上运行的是什么?只有几个HTML页面或CakePHP安装?没有。唯一的cake安装在这个附加域上。