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
相关产品推荐
相关产品推荐

