逃跑?在Codegeiter路由的正则表达式中标记

时间:2014-02-18 19:57:20

标签: regex codeigniter routing

我在routes.php文件中指定了一个URI路由,如下所示:

$route['(.+)/schoolid\?'] = 'somepage';

但是,当我输入random/schoolid?时,它会显示404页面,而不是显示URI路由中指定的“somepage”。 'somepage'确实存在,如果我只是取出\?,它会在访问random/schoolid时显示一些页面

我也尝试使用2个反斜杠而不是1个,如\\?,也不起作用。

我错过了什么?

1 个答案:

答案 0 :(得分:2)

尝试围绕parens:

$route['(.+)/schoolid(?)'] = 'somepage';

在本地进行测试,这似乎有效。

这是我的routes.php

$route['default_controller'] = "welcome";
$route['404_override'] = '';
$route['(.+)/schoolid(?)'] = 'test2/index';//echo's "test"

.htaccess

RewriteEngine on
RewriteBase /ci-214/
RewriteCond $1 !^(index\.php|bootstrap)
RewriteRule ^(.*)$ index.php/$1 [L]

这些网址全部有效(不会产生404 {和test2/index的回声测试):

http://example/ci-214/safgfgf/schoolid?/123
http://example/ci-214/safgfgf/schoolid?123
http://example/ci-214/sadf/schoolid?123
http://example/ci-214/sadf/schoolid?/
http://example/ci-214/sadf/schoolid?
http://example/ci-214/sadf/schoolid