无尾随路径信息的CakePHP路由

无尾随路径信息的CakePHP路由,php,cakephp,url-routing,Php,Cakephp,Url Routing,我有一个简单的CakePHP,我想使用它而不需要重写URL。该网站在本地运行良好,但在我的托管服务器上运行不正常。我的系统管理员建议我: PHP包装器不接受像script.PHP/additional/path/info CakePHP似乎在默认情况下会出现这种情况。我如何绕过这个限制?我想我需要通过查询字符串来传递路径信息,因此,不要像下面这样传递URL: http://example.com/index.php/controller/action http://example.com/in

我有一个简单的CakePHP,我想使用它而不需要重写URL。该网站在本地运行良好,但在我的托管服务器上运行不正常。我的系统管理员建议我:

PHP包装器不接受像
script.PHP/additional/path/info

CakePHP似乎在默认情况下会出现这种情况。我如何绕过这个限制?我想我需要通过查询字符串来传递路径信息,因此,不要像下面这样传递URL:

http://example.com/index.php/controller/action
http://example.com/index.php?path=controller/action
我可能需要这样的东西:

http://example.com/index.php/controller/action
http://example.com/index.php?path=controller/action

我相信这应该是可行的,通过改变路由方案不知何故,但如何?我试过阅读文档,深入研究框架源代码有点让人望而生畏。。。谢谢

您的简单解决方案是如何使用.htaccess从URL中删除尾部斜杠。这可以通过以下重写规则完成:

RewriteRule ^(.*)/$ $1 [R=301,L]

这应该放在应用程序的index.php所在的.htaccess文件中。

当这需要您为怪异的环境找到粗略的解决方法时,如何更容易地不使用
mod_rewrite
;我可以省略
index.php
,并且有完全相同的问题。但我关闭了它以帮助调试问题。那么问题到底是什么(“不起作用”不是很有用)<代码>修改重写和跟踪路径信息是两件不同的事情。是的,我知道它们是不同的。问题是宿主环境不支持跟踪路径信息,因此我希望改为通过查询字符串传递路径信息(
controller/action
etc)。我想这将需要对路由方案进行一些更改,但不知道这是否容易实现。好吧,您说您在使用
mod_rewrite
时面临完全相同的问题,但是
mod_rewrite
的工作方式与传递尾部路径信息的工作方式不同,因此如果这真的是相同的问题,我会感到惊讶,这就是为什么我要求描述实际问题的原因。无论如何,使用查询字符串将需要修改核心,这是不可能的,因此我建议您忘记这一点,并切换到其他主机,以防您甚至无法提供基本的
mod_rewrite
功能。