【问题标题】:Yii unable to resolve request for some urls but not allYii 无法解析对某些 URL 的请求,但不是全部
【发布时间】:2014-04-09 23:51:24
【问题描述】:

我正在尝试在 Yii 框架中设置一个页面,但是 URL 路由破坏了一些页面,但有些仍然有效。

我注意到带有连字符 (-) 的页面有效,而那些没有中断。

例如

/mypage/my-item (works) 
/mypage/myitem (breaks)

我在其他页面上使用相同的代码,我没有这个问题,所以很奇怪。

    'urlManager'=>array(
        'urlFormat'=>'path',
        'rules'=>array(
                        '<controller:\w+>/<id:\d+>'=>'<controller>/view',
                        '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
                        '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
                        // SECTORS DOES NOT WORK
                        'sectors'=>'site/sectors',  
                        'sectors/<sector:.*?>'=>'site/sectors',                         
                        // PERSPECTIVE WORKS FINE
                        'perspective'=>'site/perspective',  
                        'perspective/<article:.*?>'=>'site/perspective',    
        ),
    ),

如果我尝试将 die() 放入控制器,它仍然会抛出错误,因此由于某种原因 /mypage/myitem URL 甚至无法到达正确的控制器。

谢谢

【问题讨论】:

    标签: php url yii


    【解决方案1】:

    尝试将连字符更改为下划线怎么样。或者更好的是,将所有网址更改为一个单词;没有更多的特殊字符。

    【讨论】:

      【解决方案2】:

      正则表达式 \w+ 不包含 - 符号。所以你的示例 url 将被不同的规则解析。

      【讨论】:

        【解决方案3】:

        我找到了解决方案。这是 URL 规则的顺序。我将前三个规则移动到数组的底部并修复了它。我假设第一个在行业/规则之前实现了。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-04-18
          • 2015-09-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多