You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Yii框架自定义页面URL移除yes-前缀技术求助

移除Yii框架自定义页面URL中的yes-前缀解决方案

嘿,我来帮你搞定这个URL前缀的问题!基于你提到的已经查看过config.php配置文件,我们直接从Yii的URL管理器配置入手就行,以下是具体的操作步骤和场景分析:

第一步:找到URL管理器配置块

打开你的config.php,定位到components下的urlManager配置段,它大概长这样:

'components' => [
    'urlManager' => [
        'enablePrettyUrl' => true,
        'showScriptName' => false,
        'rules' => [
            // 这里就是定义URL规则的地方
        ],
    ],
    // 其他组件配置...
],

第二步:根据你的路由场景修改规则

出现yes-前缀大概率是因为URL规则里明确添加了这个前缀,分几种常见情况处理:

场景1:自定义页面统一由某个动作处理

如果你的所有自定义页面都通过SiteController的customPage动作(或类似)处理,原来的规则可能是这样的:

'yes-<pageName:\w+(-\w+)*>' => 'site/custom-page',

直接把规则里的yes-去掉,修改为:

'<pageName:\w+(-\w+)*>' => 'site/custom-page',

这样访问http://example.com/page-name就会直接映射到对应的自定义页面了。

场景2:自定义页面对应独立的控制器动作

如果每个自定义页面对应一个单独的控制器(比如YesController下的各个动作),原来的规则可能是:

'yes-<action:\w+>' => 'yes/<action>',

去掉前缀后调整为:

'<action:\w+>' => 'yes/<action>',

或者你也可以直接把控制器重命名(比如改成CustomController),再调整规则,不过修改URL规则更快捷。

场景3:避免和现有页面路由冲突

修改规则后要注意,别让自定义页面的URL和现有页面(比如/contact)冲突。如果担心这个,可以给自定义页面的URL规则加更精准的正则匹配,比如限定自定义页面名称必须以-page结尾:

'<pageName:[a-z]+-page>' => 'site/custom-page',

这样只有类似http://example.com/my-page的URL会走自定义页面规则,不会影响/contact这类默认页面。

第三步:确保URL重写功能正常

修改完配置后,别忘了确认你的服务器已经开启了URL重写:

  • 对于Apache:确保mod_rewrite模块已启用,并且项目根目录的.htaccess文件配置正确(Yii默认会提供这个文件)。
  • 对于Nginx:确保配置文件里有对应的rewrite规则,比如:
location / {
    try_files $uri $uri/ /index.php?$args;
}

最后,清空Yii的缓存(如果开启了缓存),刷新页面就能看到不带yes-前缀的友好URL啦!

内容的提问来源于stack exchange,提问作者Omer Wct

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:29:11