【问题标题】:Cakephp change URL behaviourCakephp 更改 URL 行为
【发布时间】:2009-08-24 18:12:31
【问题描述】:

我们正在使用 CakePHP 开发一个网站。 我们有一个带有 PHP5 的 Windows IIS 服务器(共享主机),它不支持 .htaccess 或 mod_rewrite,但我们仍然让网站正常运行并开发了很多东西。

当前的 URL 结构是这样的: mydomain/index.php/user/add

我们想将其更改为: mydomain/index.php?controller=user&action=add

我们希望这样做,因为我们面临一些意外的会话过期问题,我们怀疑这是由于用户从一个 URL 移动到另一个 URL,如下所示: mydomain/index.php/user/add 到 mydomain/index.php/list/edit 这会更改 IIS 或 PHP 的域,这会导致会话过期,但 cake 可以完美地解释页面。

如果有一种方法可以改变 Cake 的行为以获取带有问题和 & 符号的 URL,那就太好了。

提前致谢。

【问题讨论】:

  • 您的网址中不应需要“index.php”。 Cake 旨在将控制器动作作为域/控制器/动作/参数执行。
  • 是的,但是在我们使用 IIS 的情况下,它需要没有 index.php 的 index.php,它不会打开它,它会尝试找到该文件夹​​和其中的 index.php 文件,它会给出 404没有找到。
  • 您可能想查看 ISAPI_Rewrite 2(免费)、ISAPI_Rewrite 3(付费)或 Microsoft IIS Rewrite Module (IIS7)。

标签: php iis mod-rewrite cakephp query-string


【解决方案1】:

你可能想尝试这样的事情:

1) 将 IIS 文档根目录指向 app/webroot 2) 通过http://site.com/index.php?url=/user/add调用您的应用程序

至于将其更改为controller=user&action=add,我唯一可以建议的是将代码添加到您的index.php文件中,以将“controller=user&action=add”格式转换为url=/user/add格式.您可能还想检查路由器,看看是否有可以用来改变这些东西的功能。

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

【讨论】:

  • 感谢您的回答 Dooltaz!很有用。
【解决方案2】:

会话过期不是由 url 结构引起的。 你检查了吗?

  1. 配置::write('Session.timeout', '3600');在 core.php 中。让它更长
  2. 配置::write('Security.level', 'high');在 core.php 中。将其设为中或低
  3. 配置::write('Session.checkAgent', false);在 core.php 中使它为假。可能会导致 ajax 调用出现问题

【讨论】:

  • 您好,我不确定将安全级别从高降低到低或将 checkAgent 设置为 false 是否安全。你能指出我在哪里可以找到这个安全级别的作用以及它的影响吗?
  • 听起来你需要阅读 core.php (code.cakephp.org/source/app/config/core.php#123) 中的第 130 到 147 行
  • 成功了!我们还有一些问题,但基本问题已经解决了。
猜你喜欢
  • 1970-01-01
  • 2020-02-07
  • 1970-01-01
  • 2015-04-04
  • 2018-07-13
  • 2018-03-05
  • 2015-10-02
  • 2014-06-13
  • 2013-05-04
相关资源
最近更新 更多