将查询字符串URL路由到CakePHP中的控制器和操作

时间:2015-07-29 15:55:46

标签: php cakephp mod-rewrite url-routing

我正在尝试路由像

这样的旧网址

...file.php?a=login

到CakePHP请求,如

/somecontrollerA/login/

但似乎路由仅支持不带参数的网址,mod_rewrite不起作用,因为CakePHP使用$_SERVER['REQUEST_URI']而不是$_SERVER['REDIRECT_URL']

是否有可能做到这样的事情?

1 个答案:

答案 0 :(得分:1)

我终于找到了一个解决方案,并不是很好,但为此目的而努力。

打开/webroot/index.php

将以下代码放在文件的开头(感谢AD7six)

if (isset($_SERVER['REDIRECT_URL'])) {
$_SERVER['REQUEST_URI'] = preg_replace("/^(.*?)\/webroot/", "$1", $_SERVER['REDIRECT_URL']);
}

然后.htaccess文件在/ webroot /(第3和第4行)

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING}     ^a=login$     [NC]
RewriteRule ^(.*)myfile\.php$ controllerA/login [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

现在,cake识别myproject / myfile.php?a =登录为/ controllerA / login