freemylove 2012-09-05 23:25:44 3428次浏览 7条回复 0 0 0

'sss/<id:\d+>/<title>' => 'site/show',

title为 汽车板块大幅走高 长城汽车涨近7%

访问出现错误,提示:

Bad request!

Your browser (or proxy) sent a request that this server could not understand.

If you think this is a server error, please contact the webmaster.

Error 400

进数据库里把%分号删掉就可以正常访问了,请教原因或解决办法,谢谢

  • 回复于 2012-09-05 23:26 举报

    并且我 site/show 只是按照id从数据库查数据,title只是为了美化网址,并没有当做参数查询啊。

  • 回复于 2012-09-05 23:37 举报

    是要在配置文件里配置urlManager的rules吗?
    一般是这样的格式:

    'rules'=>array(
        '<controller:\w+>/<id:\d+>'=>'<controller>/view',
        '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
        '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
    )
    
  • 回复于 2012-09-05 23:51 举报
    'urlManager'=>array(
        'urlFormat'=>'path',
        'showScriptName'=>false,
        'rules'=>array(
            'sss/<id:\d+>/<title>.html' => 'site/show', // e.g. model/1-model+name.html
        ),
    ),
    
  • 回复于 2012-09-05 23:51 举报

    urlManager 写的没问题,只要数据库title字段没有特殊字符,就可以正常访问

  • 回复于 2012-09-06 00:04 举报

    可以把里面的特殊字符编码一下,或者自动删除掉,试试。

  • 回复于 2012-09-07 13:48 举报

    关键是自动删除就会影响title原有的含义了。 编码的话,不知道到底多少字符会影响到出现这个问题

  • 回复于 2012-09-08 23:52 举报

    楼上的别再乱扯了,\w+ 换成 .+ 就好了……

    PCRE你们得好好学学啊。

您需要登录后才可以回复。登录 | 立即注册