我在子目录(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和/或路由技巧。提前感谢您提供任何帮助。
答案 0 :(得分:1)
基本上,您将网站B(Cake)放在网站A(Maindomain)的公共网站目录中。
我真的不鼓励你这样做,因为这样所有'私有'CakePHP目录也在你的公共网页目录中(例如cakeDomain / app / tmp / logs / error.log)。请正确检查这些位置是否妥善保护
你可以访问公共网页的“外部”目录吗?
话虽如此,这可能有所帮助: http://cookingwithcakephp.blogspot.nl/2008/04/installing-cakephp-into-subdirectory.html