我正在开发CakePHP应用程序。当我将它上传到我的主机的public_html目录时,我已经为它创建了一个子目录。
所以现在的结构是这样的:domain.com/subdircake /.
我在public_html根目录中包含了一个.htaccess文件,我已经将webroot文件夹中的index.php更改为指向子目录。
由于错误的.htaccess配置,我不知道在cakeapp或mod_rewrite问题中是否存在路由问题,但会发生什么呢。
所以我认为它必须是一些重写问题,但我没有任何线索。
有人有任何想法吗?
答案 0 :(得分:5)
前往domain.com/action
的原因是您的.htaccess解决方案有效 - 它确实将URL重写到正确的位置。但是,CakePHP的路由系统并不知道您对默认重写脚本所做的更改,这会导致HTML Helper生成的链接仍然指向他们不用编辑.htaccess文件的位置。
首先想到的解决方案是更改App.base
配置;在Config/bootstrap.php
中,添加以下行:
Configure::write('App.base','/');
看看是否有帮助。我建议在更改设置后彻底测试网站,但许多CakePHP功能会使用它,结果可能会出乎意料。
答案 1 :(得分:0)
你使用userdir mod吗?
如果你这样做,你必须编辑3蛋糕.htaccess(位于你的蛋糕文件夹的根目录,你的应用程序/文件夹和你的app / webroot /文件夹中,然后添加其中一行RewriteEngine On
行:
#.htaccess :
RewriteBase /~username/
#app/.htaccess :
RewriteBase /~username/app
#app/webroot/.htaccess :
RewriteBase /~username/app/webroot
用您的用户名替换用户名,但不要忘记〜
如果蛋糕文件夹位于子目录中,则为/~username/subdir/...
答案 2 :(得分:0)
将webroot
目录的内容放在public_html
文件夹中。
然后更改index.php
(在webroot / public_html中,而不是在cake的app目录中)以下行
if (!defined('ROOT')) {
define('ROOT', 'subcakedir');
}
/**
* The actual directory name for the "app".
*
*/
if (!defined('APP_DIR')) {
define('APP_DIR', 'app');
}
答案 3 :(得分:0)
Thiago Campezzi的答案非常有效,我对Kornel
也有同样的问题在Config/bootstrap.php
中,添加以下行:
Configure::write('App.base','/');
我无法评论或投票,所以我在这里写了:)谢谢!!我搜索了几个小时的答案!
顺便说一句,这适用于.htaccess而没有它,因此每次将新版本的应用程序上传到网络服务器时都无需更改。