2009-08-24 137 views
0

我们正在使用CakePHP开发一个站点。 我们有一个Windows IIS服务器(共享主机)与PHP5,不支持.htaccess或mod_rewrite,但我们仍然有网站启动和运行,并开发了很多东西。Cakephp更改URL行为

当前的URL结构是这样的: MYDOMAIN/index.php文件/用户/加

我们希望此更改为类似: MYDOMAIN/index.php的控制器=用户&行动=添加

我们希望,因为我们正面临一些意想不到的会话过期问题,要做到这一点,我们怀疑,这是由于用户从一个URL旅行到另一个像这样: MYDOMAIN/index.php文件/用户/添加 到 mydomain/index.php/list /编辑 这改变了doma在IIS或PHP导致会话过期,但蛋糕是完全解释页面。

如果有一种方法可以改变Cake的behiviour以带有问题和amphersand的URL,它将会很棒。

在此先感谢。

+0

你不应该在你的网址需要'index.php'。 Cake被设计为以domain/controller/action/params身份执行控制器操作。 – 2009-08-24 18:20:11

+0

是的,但在我们的情况下与IIS,它需要index.php没有index.php它不会打开它,它试图找到该文件夹​​和里面的index.php文件,它没有找到404。 – happyhardik 2009-08-24 18:27:07

+0

您可能想查看ISAPI_Rewrite 2(免费),ISAPI_Rewrite 3(付费)或Microsoft IIS重写模块(IIS7)。 – deizel 2009-08-25 11:56:34

回答

0

届期满不是由URL结构造成的。 你有没有检查?

  1. Configure :: write('Session.timeout','3600');在core.php。使其更长
  2. Configure :: write('Security.level','high');在core.php。使其中等或低
  3. Configure :: write('Session.checkAgent',false);在core.php中使其成为假。可能会导致问题与阿贾克斯调用
+0

嗨,我不确定,如果安全将安全级别从高到低或将checkAgent设置为false。你能指点我到哪里,我可以找到这个安全级别做什么以及它会产生什么影响? – happyhardik 2009-08-25 04:58:40

+0

听起来像你需要阅读core.php中的第130至147行(http://code.cakephp.org/source/app/config/core.php#123) – deizel 2009-08-25 11:52:41

+0

这解决了!我们仍然有一些问题,但基本问题解决了。 – happyhardik 2009-09-08 08:55:34

1

你可能想尝试这样的事:

1)点你的IIS文档根目录应用程序/ webroot的 2)要http://site.com/index.php?url=/user/add

至于改变成控制器=用户将自己的应用& action = add,我建议的唯一的事情就是将代码添加到index.php文件中,将“controller = user & action = add”格式转换为url =/user/add格式。您可能还需要检查路由器,看看是否有可以用来改变这些事情的功能。

如果您需要更多的帮助,我会发布的问题在irc.freenode.net #cakephp

+0

感谢您的回答Dooltaz!这很有用。 – happyhardik 2009-09-08 08:56:40