【发布时间】:2013-06-22 21:49:43
【问题描述】:
我进行了很多搜索,完成了一些教程,我想我知道它应该是如何工作的,但它不起作用。有人知道 CakePHP 中的 rewriteRule 是怎么回事吗?它有“问题”吗?
顺便说一句,我开始尝试使用 Router::connect 并且也无法实现。我很乐意接受任何一种解决方案。
目标:将我笨拙的旧查询字符串 (?action=show&id=3) 路由或重定向到常规的 CakePHP URL (/show/3),例如,一旦我完成切换,人们现有的书签仍然有效给蛋糕。我真正需要捕获的只是 id= 位中的数字。
这是我对 rewriteRule 的最新尝试(webroot 中的 .htaccess):
RewriteRule id=([0-9]+)$ /Features/view/%1 [R=301,L]
什么都不做。
这是我在 Router::connect 中的最新尝试:
Router::connect(
'index.php?action=show&id=:id',
array('controller' => 'features', 'action' => 'view'),
array('pass'=>array('id'),'id' => '[0-9]+')
);
什么都不做。我现在花了整整三个漫长的晚上阅读、尝试和失败。我已准备好接受您的帮助。
【问题讨论】:
-
您不能根据 get 参数定义路由,因为它们不是用于匹配已定义模式的字符串的一部分(因为它们是正则表达式,“index.php?a...”也不意味着那个文字字符串)。您的重写规则与获取参数不匹配 - 它与例如 url 匹配"/id=123" - 这就是它什么都不做的原因。
标签: cakephp mod-rewrite routes