0

我已经在共享主机上设置了 CakePHP,在一个子目录 (cakeDomain) 中。在根目录 (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 和/或路由技巧。提前感谢您提供的任何帮助。

4

1 回答 1

1

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

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

您是否有权访问公共网络脚“外部”的目录?

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

于 2013-02-02T21:18:10.407 回答