2010-05-24 60 views
0

使用CakePHP 1.3运行CakePHP的应用程序,我有以下布局:如何从子目录

/srv/www/_cakephp13/ 
    /app/ 
    /cake/ 
    /plugins/ 
    /vendors/ 
    etc... 

/srv/www/htdocs/ 
    /cake_app/ 
    /other-dir/ 

...其中htdocs是公共目录,我提出我的应用程序的webrootcake_app以上。 ..这似乎是差不多工作。 (自定义webroot的index.php后)。

当我访问http://devserver/cake_app/时,我能够看到默认的“主页”页面控制器/视图(我已经自定义,因此似乎似乎正在工作)。

但是,当我访问http://devserver/cake_app/controller/view我收到错误。

是否可以在网站根目录的子目录中运行Cake App?我怎样才能得到这个工作?

理想,我不想要编辑的Apache的conf的......如果我可以用蛋糕配置或htaccess中解决这个问题,我会更快乐。

+0

你可以发布你的.htaccess吗?它在哪个目录? – webbiedave 2010-05-24 15:33:56

+0

他们都在这个地方,哪一个呢? =)* htdocs *没有一个,* cake_app *和* _cakephp13 *中的其他文件是Cake的解压缩文件。我没有编辑它们。 * htdocs *的Apache Directory定义将AllowOverride设置为All。 – 2010-05-24 15:40:39

+0

cake_app中的一个。您应该验证.htaccess正在运行,并且正在进行重写。运行一些测试来验证这两个。 – webbiedave 2010-05-24 15:55:52

回答

2

您应该验证.htaccess正在运行,并且重写模块已打开并正在工作。

+0

接受,因为这是我特别的问题。查看我对原始帖子的评论以获取更多信息。 – 2010-05-24 17:16:33

+1

在.htaccess上重写base也会造成麻烦,所以需要正确设置。 – dabito 2010-05-24 17:28:35

+0

@dabito:非常真实。添加'Rewritebase /'解决了许多人的配置错误。 – webbiedave 2010-05-24 17:34:40

1

您将需要在Apache上启用mod_rewrite。要检查它是否打开,请创建一个页面,只是这样做:

echo phpinfo(): 

在文本“加载模块”上的Grep。确保mod_rewrite在那里列出。如果不是,您可以将其添加到apache的配置中,或者您可能需要安装它(取决于您的原始安装方法以及是否包含该模块)。

如果你不能让mod_rewrite运行,你仍然可以在没有它的情况下使用蛋糕(该URL看起来像index.php/controller/action/etc)。查看http://book.cakephp.org/view/333/A-Note-on-mod_rewrite了解更多信息。具体来说,

如果你不想或者不能得到 的mod_rewrite(或其他兼容 模块)和运行服务器, 你需要使用Cake的内置 漂亮的网址上。在/app/config/core.php, 取消注释行,看起来像:

配置::写( 'App.baseUrl', ENV( 'SCRIPT_NAME'));